在g ++中,可以指定asm的clobber列表,例如:
asm ("somecode" : : "r1", "r2", "r3");
表示asm代码更改寄存器r1,r2,r3。
现在,我更改的寄存器依赖于模板参数n
(asm
块在模板函数内),寄存器r1,...,rn将被更改。我该如何表达呢?
答案 0 :(得分:1)
您遇到多少个不同的寄存器星座?如果不是太多,您可以为每个提供特定的实现。 (模板专业化)
因为,我理解不可能创建“模板语句”。
答案 1 :(得分:0)
您可以设置可以在clobber列表中使用的所有寄存器,因此编译器不会使用它们来存储变量的值;我知道这有点慢,但是如果你不需要非常高的优化,那就可以了。