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