我需要在c语言中编写宏来进行汇编语言命令

时间:2017-02-08 06:39:49

标签: c assembly macros

我已经编写了这个宏来在C:

中添加汇编语言命令
TEST_ASM(asm_command)  asm( #asm_Command )

适用于单个命令,如:

TEST_ASM("nop")
TEST_ASM("write 0")

但是,为此:

TEST_ASM("e_li r3, 0x201")

它给出错误:

  

宏“TEST_ASM”传递了2个参数,但

只需1

此错误是由asm命令中的逗号引起的,该命令查找下一个参数。

宏是否可能将逗号作为字符串?

我不想使用变量参数宏,因为它会在静态分析中发出警告。

1 个答案:

答案 0 :(得分:2)

请勿在宏中使用字符串化,以下代码段适用于gcc:

#define TEST_ASM(asm_Command) asm( asm_Command )

int main()
{
  TEST_ASM("mov $1,%eax");
  return 0;
}