Хранение байтов в регистре процессора: где находится AL внутри RAX? - PullRequest
0 голосов
/ 16 апреля 2019

Предположим, я хочу сохранить следующее 64-битное число в регистре RAX, каков порядок байтов в регистре?

10011111 10100000 11011111 00000001 00001111 00100110 00100110 11101000

RAX = full number; EAX = 00001111 00100110 00100110 11101000; AX = 00100110 11101000; AH = 00100110; AL = 11101000.

Является ли младший значащий байт для хранения в AL?

Зависит ли порядок от младшего или старшего или всегда одинаков для хранения регистров?

Это правильные выходные данные вэтот случай?AL = 232; AH = 38; AX = 9960; EAX = 254158568; RAX = 11502438643946366696

1 Ответ

1 голос
/ 16 апреля 2019

Ваши результаты выглядят корректно (за исключением того, что я не удосужился вычислить что-либо выше AL и AH).

Порядковый / большой порядковый номер обычно применяется только к адресуемой памяти, для регистра это как бы малосмысл (если только вы немного не расширили определение порядка байтов, как вы это сделали - но учтите, что эта возможность доступа к частям регистра с помощью разных имен / инструкций регистра очень специфична для x86 / x64).

ИМХО, правильнее использовать здесь термин битовая нумерация и определения AL, AH и т. Д. Из справочной документации x86.

С другой стороны, когда RAX сохраняется в памятиAL будет в байте с самым низким адресом ...

...