我想在我的 C 代码中编写一些内联 ARM 程序集。对于此代码,我需要使用一个或两个以上的寄存器,而不仅仅是声明为函数的输入和输出的寄存器。我知道如何使用 clobber 列表告诉 GCC 我将使用一些额外的寄存器来进行计算。
但是,我确信 GCC 在优化时可以自由地调整哪些寄存器用于什么。也就是说,我觉得在计算中使用固定寄存器是个坏主意。
在不使用固定寄存器的情况下,使用既不是我的内联程序集的输入也不是输出的额外寄存器的最佳方法是什么?
PS我在想使用虚拟输出变量可能会奏效,但我不确定会产生什么样的奇怪的其他效果......