【发布时间】:2016-03-18 18:20:45
【问题描述】:
我正在尝试在 gcc 扩展 asm 命令中使用 .ascii 指令,但我不断收到编译器错误。扩展 asm 中的指令的确切语法是什么?
我尝试了以下选项,但都没有奏效:
asm ("NOP;"
".ASCII ""ABC"""
);
我收到“错误:行尾有垃圾,第一个无法识别的字符是 `/'”
asm ("NOP;"
".ASCII "ABC""
);
我收到错误:行尾有垃圾,第一个无法识别的字符是 `/'"
asm ("NOP;"
.ASCII "ABC"
);
我在'/'标记之前收到“错误:预期的':'或')'”
【问题讨论】:
-
显示您尝试过的内容以及遇到的错误。反正语法可以在assembler manual找到,但基本上就是
.ascii "text"。另外,不要使用它,您可以在 C 中声明您的文本。 -
它对我不起作用。我编辑了我的问题以回应您的评论
-
像对待 printf 一样考虑 asm 指令。如果你想打印
NOP;.ASCII "ABC",你怎么做?要将引号放在字符串中,您需要对它们进行转义:printf("NOP;.ASCII \"ABC\"");。请注意,在扩展 asm 中执行此操作可能不会满足您的要求。汇编器不会将 ascii 字符串放在“数据”部分,它会被正确地放入汇编器指令流中以执行。执行“ABC”可能不会给你想要的结果。
标签: gcc assembly directive inline-assembly