Мне нужна помощь в понимании порядка байтов внутри регистров ЦП процессоров x86. Я написал эту небольшую ассемблерную программу:
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 (прокомментировано в источнике выше). В этой точке останова регистры информации
показывают значение eax = 0x78ff5abc
и ebx = 0x5a595857
.
Поскольку коды ASCII для W, X, Y, Z равны 57, 58, 59, 5A соответственно; и Intel является прямым порядком байтов, 0x5a595857 кажется правильным порядком байтов (сначала младший байт). Почему тогда нет вывода для регистра eax 0xbc5aff78
(младший байт числа 0x78ff5abc первым) вместо 0x78ff5abc
?