Next: , Previous: Aggregate Return, Up: Stack and Calling


17.10.10 调用者保存的寄存器分配

如果你使用这种功能,GCC可以将寄存器保存在函数调用附近。 这使得可以使用调用破坏的(call-clobbered)寄存器来存放必须活跃于调用之间的变量。

— Macro: CALLER_SAVE_PROFITABLE (refs, calls)

一个C表达式来确定是否值得考虑将一个伪寄存器放在一个调用破坏的硬件寄存器中, 并在每个函数调用的附近进行保存和恢复。表达式应该为1,当值得去做,否则为0。

如果没有定义该宏,缺省值将被使用, 其在大多数机器上都是好的:4 * calls < refs

— Macro: HARD_REGNO_CALLER_SAVE_MODE (regno, nregs)

一个C表达式指定了将伪寄存器nregs保存在调用破坏的硬件寄存器regno中, 需要哪种机器模式。如果regno不适合调用者保存,则应该返回VOIDmode。 对于大多数机器,该宏不需要被定义,因为GCC将选择最小的合适的机器模式。