是否可以禁止在一小段C++代码中使用某些寄存器?

mer*_*011 6 c++ g++

我已经看过这个问题,但由于以下原因,这两个解决方案都不适合我.

  1. 我试图阻止c ++代码接触寄存器,而不是汇编,因此clobber列表将无法工作.
  2. 我想在本地执行此操作,而不是全局执行此操作,因此全局显式寄存器变量过于严厉.

是否有可能以某种方式包装一组c ++语句来告诉编译器不使用某些寄存器?

gra*_*eds 0

不,C++ 的底层有一个非常简单的模型。

如果你想一想,C++ 编译器如何知道要编译的寄存器?

如果不深入研究汇编程序,你将无法做到这一点。

因为您想要防止某些寄存器被使用,所以您需要编写从您想要禁止这些寄存器的位置到不再需要该要求的位置的代码 - 这可能是很多代码。

如果没有更多细节说明为什么要阻止访问某些寄存器以及阻止的持续时间,那么我所能给出的只是模糊的概括。