Как будет храниться отдельное двойное слово массива в сборке Intel x86 (с прямым порядком байтов) для значения 5?

В настоящее время я учусь в университете, и мой профессор увеличил масштаб во время записи лекции, поэтому я не мог видеть, что он пишет. Я не уверен, как, например, будет храниться DWORD 5, например, начиная с местоположения 2000:

Я думал

2000: 00000101

2001: 00000000

2002: 00000000

2003: 00000000

но я не уверен, что это возможно.

2000: 00000000

2001: 00000000

2002: 00000000

2003: 00000101

Буду признателен, если кто-нибудь объяснит, какой из них правильный.


person David Warshawsky    schedule 05.03.2021    source источник
comment
Это зависит от архитектуры, для которой вы программируете. В x86, архитектуре с прямым порядком байтов, верно первое. На архитектурах с обратным порядком байтов, таких как M68k, верно последнее. Некоторые архитектуры имеют настраиваемый порядок следования байтов (например, ARM, PPC, MIPS).   -  person fuz    schedule 05.03.2021
comment
вы можете попробовать это самостоятельно с помощью ассемблера, например. поместите dd 5 в файл с именем foo.asm и запустите nasm foo.asm -l/dev/stdout, чтобы записать листинг в стандартный вывод с байтами, выгруженными в шестнадцатеричном порядке в памяти. (И создайте foo.bin, который вы также можете сделать в шестнадцатеричном формате).   -  person Peter Cordes    schedule 06.03.2021


Ответы (1)


x86 имеет прямой порядок следования байтов, и [a] система прямого порядка байтов сохраняет младший байт в наименьшем адрес.

Итак, первый.

person ilkkachu    schedule 05.03.2021