assembly .byte数组是否与声明.asciz字符串文本相同?

mf98qq94  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(94)

这看起来可能是个奇怪的问题,但是x64对待声明为.byte段的数组和对待.asciz数组一样吗?上下文是我使用read系统调用阅读字符串(只是看看我是否可以)。我将其存储在. bytes类型的缓冲区数组中。但是,如果我尝试通过printf将此数组打印到标准输出,它不会打印任何内容。因此,我的问题是,本质上,在这种情况下我需要做一些不同的事情吗?

i7uaboj4

i7uaboj41#

是,但有一个例外:.byte数组不会像.asciz那样在末尾放置空终止符。

.asciz "Hello"

等同于:

.byte 0x48,0x65,0x6C,0x6C,0x6F,0x00

然而,这甚至比这更进一步。例如,.word 0x1234被视为与.byte 0x34,0x12相同(假设x86是一个little-endian体系结构)。为了清晰起见,最好使用其预期类型声明数据,但不像在C中那样需要这样做。(一些汇编程序有这样的问题,但在运行时,所有的赌注都是错误的。)

相关问题