Что означают префиксы E и R в именах 32-разрядных и 64-разрядных регистров Intel?
Имена 32-битных регистров начинаются с E, а 64-битные начинаются с R. Что означают E и R? Есть ли причина для выбора этих алфавитов?
Кроме того, в 64-битных регистрах мы также можем видеть в любом низкоуровневом отладчике, таком как Windbg, что самые правые биты по-прежнему называются с тем же именем, что и у 64-битного регистра, за исключением того, что имя начинается с E. Например, самые правые 32 бита регистра RAX в 64-битной системе называются EAX.
Итак, E и R означают что-то? А также, почему суффикс X для регистра?
1 ответ
R
просто означает " р эгистер". Расширение AMD64 ISA добавило 8 дополнительных регистров общего назначения, названныхR8
черезR15
, 64-битные расширенные версии оригинальных 8 регистров имелиR
к ним добавлен префикс для симметрии.E
расшифровывается как "расширенный" или "расширенный". ( Википедия говорит "расширенный".) Это "расширенные" версии 16-битных регистров, в которых они предлагают 16 дополнительных битов для 32-битного общего количества.X
также для "e x tended" - или, возможно, подразумевает 16, как в x x adecimal. * TheX
Регистры с суффиксами - это 16-битные расширенные версии 8-битных регистров. Для 8-битных регистровL
суффикс означает "низкий", аH
суффикс означает "высокий".
Поэтому, взяв один конкретный регистр в качестве примера, вы получите 8-битный AL
а также AH
регистры, которые являются младшим и старшим байтами 16-битного AX
регистр, который является младшим словом 32-битного EAX
регистр, который является младшим двойным словом 64-битного RAX
регистр.
| 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 |
======================================
. . | AH | AL |
. . | AX |
. | EAX |
| RAX |
======================================
| 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 |
__
* X
был использован в мнемонике (например, LXI
а также DCX
) на 8080 для инструкций, которые обрабатывали пару отдельных в отдельности 8-битных регистров как 16-битное целое число, аналогично тому, как AX
представляет AH:AL
пара. Таким образом, другая возможная интерпретация заключается в том, что X
означает пару, и это использование было продолжено при именовании пар high:low на последующих процессорах, включая 8086, который был полным 16-разрядным расширением 8080.