Что означает X в EAX, EBX, ECX ... в сборке? - PullRequest
21 голосов
/ 30 марта 2010

Google не показывает результат,

Кто-нибудь знает?

Ответы [ 5 ]

34 голосов
/ 02 апреля 2010

X означает пару и возвращается как минимум к 8080. Он имел 8-битные регистры B, C, D, E, H, L (среди прочих) которые также могут быть использованы в парах (BC, DE и HL). Пары BC и DE использовались в основном для 16-битной арифметики; пара HL обычно содержит адрес памяти. Некоторые примеры использования X для пары :

LXI  D,12ABH    ; "load pair immediate"
DCX  B          ; "decrement pair"
STAX D          ; "store A (indirect) at pair"

Перемотка вперед к 8086. Он имеет регистры AL, AH, BL, BH, CL, CH, DL, DH, которые, как и 8080, могут использоваться в парах: AX, BX, CX, DX.

Как уже отмечали другие, E в 32-битных именах регистров означает extended .

9 голосов
/ 30 марта 2010

Ничего, насколько я знаю. Он обозначает регистр общего назначения.

16-битный регистр AX можно адресовать как AH (старший байт) и AL (младший байт).

Регистр EAX является 32-битной версией регистра AX. Е означает расширенный.

5 голосов
/ 30 января 2012

На 8086 регистр AX представлял собой комбинацию AH и AL. Аналогично BX были BH и BL и т. Д. На 80386 вместо объединения 16-битных регистров в 32-битные регистры Intel добавила 16 бит в каждый регистр. Название «AL» по-прежнему относится к битам 0-7 первого буквенно-буквенного регистра, «AH» к битам 8-15 и «AX» к битам 0-15; имя «EAX» теперь относится ко всем 32 битам регистра.

Интересно отметить, что большинство других 16- и 32-разрядных процессоров не предлагают никаких эквивалентных средств доступа только к верхней или нижней части регистра. Затраты на предоставление такого доступа, как в отношении аппаратной сложности, так и в битах кодирования инструкций, были значительными, и в наше время возможность добавления одной 8-битной части регистра в 8-битную часть другого регистра является весьма значительной. менее полезный, чем многие другие применения, для которых может быть использовано такое аппаратное обеспечение или пространство кодирования команд. С другой стороны, бывают случаи, когда такие способности могут быть полезны, когда они существуют.

1 голос
/ 30 марта 2010

Как говорит Михай, это просто соглашение об именах.

Однако, учитывая, что «X» часто используется для «заполнения вашего значения» и обычно используется математиками в качестве имени первой переменной выбора в уравнениях, и что эти конкретные регистры имеют общее назначение (в отличие от ESP) который является указателем расширенного (32-разрядного) стека или EIP указателем расширенной инструкции), возможно, именно поэтому X выбран, а не «B».

0 голосов
/ 30 марта 2010

Одна возможная причина, о которой я могу подумать, - это обозначить, что она не имеет «нормального» состояния. Говоря о последовательной связи в электронике, если одна из линий данных может быть чем-либо, вы можете сказать, что ее состояние - X, так как оно не равно / и / или 0, или 1.

...