.string 在汇编语言中的作用是什么?
在 C 语言的内联 asm 调用中,我写了以下代码:
.string \"Hello World\"
1) 有人能够给我简要介绍.string是如何工作的吗?
2) 不知何故,那个值被保存在%esi中。为什么?
3) 我如何在结尾添加回车符?\n不起作用。
.string 在汇编语言中的作用是什么?
在 C 语言的内联 asm 调用中,我写了以下代码:
.string \"Hello World\"
1) 有人能够给我简要介绍.string是如何工作的吗?
2) 不知何故,那个值被保存在%esi中。为什么?
3) 我如何在结尾添加回车符?\n不起作用。
.string
是GAS汇编语言中的一种指令,类似于.long
、.int
或.byte
。它的作用是创建和初始化内存,供程序使用。.string
指令会自动在字符串末尾添加[\0]
来表示字符串的结束。在本例中,汇编器为14个字符分配了14个连续的字节的空间。如果你查看内存,你会看到这样的内容:
["][H][e][l][l][o][ ][W][o][r][l][d]["][\0]
除了十六进制而不是字符外,我不确定为什么%esi
指向该字符串(这可能是我不熟悉的汇编设置,或者在您没有展示给我们的代码行上被设置为那样)。它的意思是%esi
“指向”字符串的第一个字节-在这种情况下是第一个 [“] 。您可以使用
%esi
寄存器通过偏移量(%esi + 5 将是
[o] )或递增寄存器本身来循环遍历字节。
要添加换行符,您可以尝试使用\x0D\x0A
而不是\n
。