使用编译器选项,是否可以限制例程使用某组寄存器?
例如:限制例程仅使用R0-R8;
目的:如果某些编译器选项可用,那么我可以确保某些例程(如中断服务例程)仅使用有限的寄存器集,从而做有限的Context Save&还原
答案 0 :(得分:1)
When this was last discussed,共识是在逐个功能的基础上不可能。
有一些方法可以在整个编译过程中限制寄存器的使用,因此如果将中断例程放在单独的编译单元中,则可以使用the gcc
switch -ffixed-reg
。如果您希望编译器不使用-ffixed-R0
生成代码,我相信它将像R0
一样使用。