【发布时间】:2013-06-07 09:18:53
【问题描述】:
我正在使用 mingw 4.7.2。
谁能告诉我这个宏有什么问题
我想做的只是一个简单的 asm 宏,它添加两个 int 并将结果放入 result 变量中
#define add(result,a,b) \
__asm__ __volatile__( \
" movl %1, %%eax \n" \
" addl %2, %%eax \n" \
" movl %%eax, %0 \n" \
" :"=r"(result) \
:"r"(a),"r"(b) )
编译器说error: missing terminating " character
提前致谢
【问题讨论】:
-
我猜这里 *" :"=r"(result) * 引号数量有问题
-
你也应该在你的clobber中标记
eax(或者使用%1已经在一个寄存器中的事实,所以你实际上不需要将它移动到任何地方来将它添加到另一个寄存器) -
感谢Sharptooth,我忘了检查语法,但gcc inline asm真的很痛苦:(
-
既然被标记为C++,这个宏就什么都错了,hrhrhr。
标签: c++ gcc assembly inline-assembly