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

问题描述 投票:-1回答:1

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

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

目的:如果某些编译器选项可用,那么我可以确保某些例程(如中断服务例程)仅使用有限的寄存器集,从而进行有限的上下文保存和恢复。

assembly compiler-construction arm cpu-registers
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.