在 g++ 中,可以指定 asm 的 clobber 列表,例如:
asm ("somecode" : : "r1", "r2", "r3");
这意味着 asm 代码更改了寄存器 r1、r2、r3。
现在,我更改的寄存器取决于模板参数 n
(asm
block 在模板函数内部),寄存器 r1, ..., rn 将被改变。我该如何表达呢?
最佳答案
您遇到了多少种不同的注册星座?如果不是太多,您可以为每个提供一个特定的实现。 (模板特化)
因为,我担心无法创建“模板化语句”。
关于C++: asm 破坏列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096275/