我想将 '\n' 表示为汇编代码!!
例如,
#include <stdio.h>
int main() {
printf("Hi! My name is Joe.\n I'm 11 years old");
return 0;
}
如何在Assembly中表达'\n'部分?
最佳答案
这取决于你使用的特定汇编器,但在某些(包括 GAS: https://sourceware.org/binutils/docs/as/Characters.html )中,它仍然是 \n
,就像 C 一样。你可以看到汇编的样子以多种不同的方式,但如今 Godbolt 相当不错。
https://gcc.godbolt.org/z/ZLq3Kn
.LC0:
.string "Hi! My name is Joe.\n I'm 11 years old"
可以看到字符串看起来是一样的。在 GAS 中,.string
创建一个以 0 结尾的字符串。如果您更改为 Clang(它使用相同的语法但对要发出的指令做出不同的选择),您会看到它使用 .asciz
。
.L.str:
.asciz "Hi! My name is Joe.\n I'm 11 years old"
但是在两个汇编器中,\n
是一样的。
并非所有汇编器都支持这种语法。但很多都支持。查看您的汇编器手册。
.string
在大多数目标上与 .asciz
相同,都附加了一个零。 The manual says在某些 ISA 的 GAS 语法中,.string
可能不会附加零,而 .asciz
总是如此,.ascii
永远不会。 z
代表零。
关于c - '\n'如何在汇编中表达?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58279528/