c ++:asm clobber list

时间:2010-11-04 11:42:21

标签: c++ assembly g++ inline-assembly cpu-registers

在g ++中,可以指定asm的clobber列表,例如:

asm ("somecode" : : "r1", "r2", "r3");

表示asm代码更改寄存器r1,r2,r3。

现在,我更改的寄存器依赖于模板参数nasm块在模板函数内),寄存器r1,...,rn将被更改。我该如何表达呢?

2 个答案:

答案 0 :(得分:1)

您遇到多少个不同的寄存器星座?如果不是太多,您可以为每个提供特定的实现。 (模板专业化

因为,我理解不可能创建“模板语句”。

答案 1 :(得分:0)

您可以设置可以在clobber列表中使用的所有寄存器,因此编译器不会使用它们来存储变量的值;我知道这有点慢,但是如果你不需要非常高的优化,那就可以了。