Assembly 大端和小端表示
如果我写下Assembly 大端和小端表示,assembly,endianness,Assembly,Endianness,如果我写下 section .data align 4 X: db 1 Y: dw 5 Z: db 0x11 section .text add dword [X], 0xAA000101 我试图理解big-endian和little-endian表示法之间的区别,但我不知道每个表示法的每个变量的值是多少?它们是否相同?在大端配置中,x86上双字32位的最高有效字节存储在最小地址,最低有效字节存储在最大地址。 在小端配置中,最低有效字节存储在最小地
section .data
align 4
X: db 1
Y: dw 5
Z: db 0x11
section .text
add dword [X], 0xAA000101
我试图理解big-endian和little-endian表示法之间的区别,但我不知道每个表示法的每个变量的值是多少?它们是否相同?在大端配置中,x86上双字32位的最高有效字节存储在最小地址,最低有效字节存储在最大地址。 在小端配置中,最低有效字节存储在最小地址中 首先让我们以big endian为例: 如果我们在内存中以big-endian配置排列变量,我们会得到:
; -> Address increases ->
X: 01
Y: 00 05
Z: 11
或者,组合在一起:
01 00 05 11
MSB LSB
01 05 00 11
LSB MSB
当被视为等于0x01000511的32位值时。添加0x01000511和0xAA000101将得到0xAB000612。如果我们再次查看内存中的单个字节,我们会得到:
; -> Address increases ->
AB 00 06 12
因此,结果是:
X = 0xAB
Y = 6
Z = 0x12
在小endian配置中,我们将有:
; -> Address increases ->
X: 01
Y: 05 00
Z: 11
或者,组合在一起:
01 00 05 11
MSB LSB
01 05 00 11
LSB MSB
视为等于0x11000501的32位值。添加0xAA000101将得到0xBB000602。当我们查看单个字节时,我们得到:
02 06 00 BB
结果是:
X = 2
Y = 6
Z = 0xBB
注意:所有x86处理器AFAIK都是little endian请看以下图片: 这是所有体系结构/指令集的端号列表