【发布时间】:2013-04-12 12:57:55
【问题描述】:
有没有办法让 gcc 分配一个寄存器供 asm 内联内部使用?这是一个示例(在伪 asm 中),其中 r5 直接在 asm 中使用,但它可以是任何通用寄存器,它仅供内部使用,因此既不是输入也不是输出:
asm("load_immediate_value %%r5,0;"
/* ... */
"add_immediate_value %%r5,%%r5,42"
/* ... */
:
:
: "r5");
在这个例子中,我选择寄存器 r5 并通过 clobber 列表告诉 gcc 我正在使用它。但是如果 r5 是一个 ABI 寄存器呢?!我需要一种方法来简单地要求注册,而不必自己命名。
【问题讨论】:
-
EBI 寄存器如何成为通用寄存器?还是您的意思是 ABI / EABI (例如,如果您选择 ABI 指定需要在函数调用之间保留的寄存器怎么办)?
-
是的,我指的是 ABI 而不是 EBI,抱歉
标签: c gcc assembly inline-assembly