【发布时间】:2016-03-07 07:23:36
【问题描述】:
我必须编写内联汇编代码来执行我集成到我的硬件中的自定义指令。
根据在实际芯片上要找到的硬件,指令的行为会有所不同。我的程序集如下所示:
asm volatile (
" instr_generic %1, %2, %0 \n\t"
: "=r" (c)
: "r" (a), "r" (b)
: "%g0"
);
这个instr_generic 现在可以执行例如加法或减法,具体取决于硬件上的内容。
现在,我想写 cust_add 或 cust_sub 而不是 instr_generic,然后应该将其替换为 instr_generic。换句话说,这里应该是这样的
#define cust_add instr_generic
...
asm volatile (
" cust_add %1, %2, %0 \n\t"
: "=r" (c)
: "r" (a), "r" (b)
: "%g0"
);
但我想我不能在这种情况下使用预处理器来替换内联汇编,对吗?还有其他方法可以轻松做到这一点吗?
【问题讨论】:
-
汇编语言将在编译时编译,远在您确定硬件能力的运行时之前。
标签: c assembly c-preprocessor inline-assembly