rei*_*ard 2 c assembly inline-assembly c-preprocessor
我必须编写内联汇编代码来执行我集成到硬件中的自定义指令.
根据在实际芯片上找到的硬件,指令的行为会有所不同.我的装配看起来如下:
asm volatile (
" instr_generic %1, %2, %0 \n\t"
: "=r" (c)
: "r" (a), "r" (b)
: "%g0"
);
Run Code Online (Sandbox Code Playgroud)
instr_generic
现在,这可以执行加法或减法,具体取决于硬件上的内容.
现在,而不是instr_generic
我想写,cust_add
或者cust_sub
这应该被替换instr_generic
.换句话说,它应该在这里看起来像这样
#define cust_add instr_generic
...
asm volatile (
" cust_add %1, %2, %0 \n\t"
: "=r" (c)
: "r" (a), "r" (b)
: "%g0"
);
Run Code Online (Sandbox Code Playgroud)
但我想我不能在这个上下文中使用预处理器替换内联组件是对的吗?有没有其他方法可以轻松地做到这一点?
...
#define cust(arg) \
asm volatile (
" " #arg " %1, %2, %0 \n\t" \
: "=r" (c) \
: "r" (a), "r" (b) \
: "%g0" \
)
...
cust(cust_add);
Run Code Online (Sandbox Code Playgroud)