限制在C中使用寄存器

时间:2012-06-20 19:15:18

标签: c gcc compiler-construction cpu-registers

我的问题非常类似于:GCC: Prohibit use of some registers

但是,我想限制C函数中使用的寄存器数量。换句话说,我希望能够像clobber寄存器一样使用指令,但是应用于C函数级而不是内联汇编。此外,每个函数可能有一组不同的寄存器,因此它不是一个万能的解决方案。

我想到的唯一两种可能的解决方案是:

  • 在汇编程序中执行所有操作。不是解决我问题的方法......
  • 使用某种指令分别编译每个函数,以便在GCC中有条件地使用寄存器。通过单独编译每个函数,我会失去很多潜在的优化,这会使代码几乎无法读取。

因为我试图在C中完成所有这些,所以预编译器有什么办法可以在任何方面帮助吗?有没有可能的方法来实现我的预期目标?

1 个答案:

答案 0 :(得分:4)

不,没有。您需要在函数或汇编语言中使用内联汇编语句。