内联汇编未正确解析

时间:2013-12-19 18:46:50

标签: c inline-assembly

我有这个指示:

asm("message: .byte 'Hello, World!', 0x0A");

由于某种原因,编译器说junk at end of line, first recognized character is 'e'。我尝试根据网络上的其他示例将.byte替换为db。然后输出为no such instruction: 'db 72ello, World!440x0A'(注意数字而不是撇号)。对我来说,解析'似乎有问题。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

  1. .byte仅适用于单个字节,如0xFA或“F”。
  2. db是intel语法,内联汇编使用GNU语法。

  3. 如上所述,.byte仅适用于一个字节。要使用字符串,请使用.ascii.asciz - 前者是一个简单的字节数组,而后者是空终止的。

  4. 即。 asm("message: .asciz \"Hello, World!\n\"");