C ++:ASM Clobber列表
-
28-09-2019 - |
题
在G ++中,可以指定ASM的Clobber列表,例如:
asm ("somecode" : : "r1", "r2", "r3");
这意味着ASM代码更改寄存器R1,R2,R3。
现在,我的更改寄存器取决于模板参数 n
(这 asm
块在模板函数的内部),并且寄存器R1,RN将被更改。我该怎么表达?
解决方案
您面对多少个不同的注册星座?如果不是太多,您可以为每个人提供特定的实现。 ((模板专业化)
因为,我担心没有可能创建“模板陈述”。
其他提示
您可以设置可以在Clobber列表中使用的所有寄存器,以便编译器不会使用它们来存储变量的值;我知道这要慢一点,但是如果您不需要非常高的优化,它将起作用。
不隶属于 StackOverflow