.data
x: .int 1145258561
.bss
.lcomm temp, 4
.text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl x, %ecx
movl $1, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
我正在研究一个小端机器,并试图在我尝试打印时理解4字节整数的哪个内存字节将被打印到屏幕上。整数x的值1145258561是一个特殊值,因为它的十六进制转换是0x44434241。这意味着该整数的4个连续字节分别包含0x44,0x43,0x42和0x41(或者分别只是ASCII字母D,C,B和A.
由于我在一台小端机器上运行,正如我前面提到的,这些ASCII字母将以相反的顺序存储。可以说整数x的内存地址是0x600000。所以A,B,C,D应存储在存储单元0x600000,0x600001,0x600002和0x600003上。
在打印1个字节(edx = 1)时,它要么取整数的第一个或最后一个字节,所以要打印A或D,但令人惊讶的是屏幕上没有输出。所以现在我有3个问题: