限制例程使用一组有限的寄存器

时间:2014-10-30 08:46:43

标签: assembly compiler-construction arm cpu-registers

使用编译器选项,是否可以限制例程使用某组寄存器?

例如:限制例程仅使用R0-R8;

目的:如果某些编译器选项可用,那么我可以确保某些例程(如中断服务例程)仅使用有限的寄存器集,从而做有限的Context Save&还原

1 个答案:

答案 0 :(得分:1)

When this was last discussed,共识是在逐个功能的基础上不可能。

有一些方法可以在整个编译过程中限制寄存器的使用,因此如果将中断例程放在单独的编译单元中,则可以使用the gcc switch -ffixed-reg。如果您希望编译器不使用-ffixed-R0生成代码,我相信它将像R0一样使用。