【发布时间】:2011-05-29 03:12:40
【问题描述】:
我需要帮助了解 x86 处理器的 CPU 寄存器中的字节序。我写了这个小汇编程序:
section .data
section .bss
section .text
global _start
_start:
nop
mov eax, 0x78FF5ABC
mov ebx,'WXYZ'
nop ; GDB breakpoint here.
mov eax, 1
mov ebx, 0
int 0x80
我在 GDB 中运行这个程序,在第 10 行有一个断点(在上面的源代码中注释)。在此断点处,info registers 显示了eax=0x78ff5abc 和ebx=0x5a595857 的值。
由于W、X、Y、Z的ASCII码分别为57、58、59、5A;英特尔是小端,0x5a595857 似乎是正确的字节顺序(最低有效字节在前)。为什么不输出 eax 寄存器 0xbc5aff78(数字 0x78ff5abc 的最低有效字节在前)而不是 0x78ff5abc?
【问题讨论】:
标签: x86 cpu-registers endianness