2013-07-23 39 views
16

是否有可能迫使(在我的情况gccclang)编译器使用特定的寄存器,可以说在x86_64R15一定变量,也禁止它使用R15用于除该变量之外的任何其他目的。强制编译器使用某个寄存器的某个变量

+9

也许http://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html可以提供帮助吗? –

+2

为什么你认为你比编译器更懂得如何处理寄存器分配? –

+7

@JonathanLeffler虽然我同意你的意图,但OP表示他认为他知道他更好。也许这只是练习? – stijn

回答

6

gcc可以做到这一点。

已经引用的gcc docs解答了如何强制变量进入某个寄存器的问题。

要停止编译器使用此寄存器生成代码用于其他目的,请使用gcc开关-ffixed-reg(有关详细信息,请参阅gcc doc)。

+0

以上对[其他Stackoverflow问题](http://stackoverflow.com/questions/17809693/forcing-the-compiler-to-use-a-certain-register-for-a-certain-variable)的引用是交叉参考的绝妙例子! – devnull

+0

它无疑提醒了递归的经典字典意义之一。 '递归,n:请参阅递归' – devnull

+0

有意义的链接有点搞砸了,我试图编辑它 - 但有人更快(但仍然是错误的链接) - 我现在修复它 – flolo