c - 限制 C 中寄存器的使用

标签 c gcc compiler-construction cpu-registers

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

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

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

  • 用汇编程序完成所有操作。并不是真正解决我的问题...
  • 使用某种指令单独编译每个函数,以便有条件地使用 GCC 中的寄存器。通过单独编译每个函数,我会失去很多潜在的优化,并且会使代码几乎不可读。

由于我尝试用 C 语言完成所有这些工作,预编译器是否可以以任何方式提供帮助?有没有可能的方法来实现我的预期目标?

最佳答案

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

关于c - 限制 C 中寄存器的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126597/

相关文章:

c - 寻找新位的优化方法

c - 如何在 C 中实现重叠检查 memcpy

java - undefined symbol 错误

c++ - 与 gcc 静态链接时为 "Undefined reference to dlopen"

android - 如何在我的 Android 模拟器上编译 java 文件?

c - c 中的重构函数

c - 使用 NXP Reader Library 读取 NFC Mifare 卡

c++ - 如何实现用gcc-4.4编译的大 vector 初始化?

compiler-construction - 实现类型推断

c# - 循环编译优化