是否有可能告诉编译器(msvc,gcc)单独留下一个特定的寄存器?

时间:2015-11-05 11:52:15

标签: visual-c++ gcc calling-convention

是否可以修改编译器的调用约定,以便生成的代码避免使用特定的CPU寄存器?我对最近版本的gcc和msvc的解决方案感兴趣。

更新:-ffixed-reg和/或Explicit-Reg-Vars似乎为gcc做了诀窍。谢谢您的回答。 MSVC有类似的机制吗?

1 个答案:

答案 0 :(得分:3)

根据gcc docs

  

ffixed-REG

     

将名为reg的寄存器视为固定寄存器;生成的代码永远不应该引用它(除了可能作为堆栈指针,帧指针或其他固定角色)。

     

reg必须是注册的名称。接受的寄存器名称是特定于机器的,并在机器描述宏文件的REGISTER_NAMES宏中定义。

     

此标志没有否定形式,因为它指定了三向选择。