C++: asm 破坏列表

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

在 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/

相关文章:

C++ 从一个字符中获取指定的部分

c - 如何将 "goto"转换为 c 中的不同函数?

c++ - 链接对象和静态库

c - 手动 g++ 安装 : endless dependencies

arm - 交叉编译c++-文件: File format not recognized

c++ - 强制执行不同的 C++ 模板参数

c++ - 如何通过像素完美缩放/移动来修复 SFML 顶点数组中的垂直伪影线?

assembly - m80 宏汇编器 org 指令

c++ - 将 Boost.Proto 语法与类型匹配

assembly - 尝试在 asm 中重新编码 memmove