使用编译器选项,是否可以限制例程使用某些寄存器?
例如:限制例程仅使用R0-R8;
目的:如果某些编译器选项可用,那么我可以确保某些例程(如中断服务例程)仅使用有限的寄存器集,从而进行有限的上下文保存和恢复。
When this was last discussed,共识是,在逐个功能的基础上是不可能的。
有一些方法可以在整个编译过程中限制寄存器的使用,因此如果将中断例程放在一个单独的编译单元中,则可以使用the gcc
switch -ffixed-reg
。我相信它会像-ffixed-R0
一样使用,如果你想让编译器不使用R0
生成代码。