Что означает X в EAX,EBX,ECX ... в сборке?
Google не показывает результат,
Кто-нибудь знает?
6 ответов
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-битных именах регистров означает расширенный.
Ничего, насколько я знаю. Это обозначает регистр общего назначения.
16-битный регистр AX может быть адресован как AH (старший байт) и AL (младший байт).
Регистр EAX является 32-битной версией регистра AX. Е означает расширенный.
На 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-битной части другого регистра является весьма значительной. менее полезный, чем многие другие применения, для которых может быть использовано такое аппаратное обеспечение или пространство кодирования инструкций. С другой стороны, бывают моменты, когда такие способности могут быть полезны, когда они существуют.
Как говорит Михай, это просто соглашение об именах.
Однако, учитывая, что "X" часто используется для "заполнения вашего значения" и обычно используется математиками в качестве имени первой переменной выбора в уравнениях, и что эти конкретные регистры имеют общее назначение (в отличие от ESP, который является расширенный (32-битный) указатель стека или EIP расширенный указатель инструкций), возможно, поэтому X выбран, а не "B".
Одна возможная причина, по которой я могу придумать, - это обозначить, что она не имеет "нормального" состояния. Говоря о последовательной связи в электронике, если одна из линий данных может быть чем-либо, вы можете сказать, что ее состояние - X, так как оно не равно / и / или 0 или 1.
Ниже приводится краткое объяснение того, что означает каждый из регистров общего назначения x86:
- EAX: «Расширенный аккумулятор» — используется для арифметических и логических операций, а также для хранения возвращаемых значений функций.
- EBX: «расширенная база» — часто используется как указатель на данные в сегменте данных памяти.
- ECX: «Расширенный счетчик» — часто используется для циклических и строковых операций, а также для хранения аргументов функций.
- EDX: «Расширенные данные» — часто используется для операций ввода-вывода и для хранения аргументов функций.
- ESI: «Расширенный исходный индекс» — часто используется как указатель на исходный операнд в строковых операциях.
- EDI: «Расширенный индекс назначения» — часто используется как указатель на операнд назначения в строковых операциях.
- EBP: «Расширенный базовый указатель» — часто используется как указатель на базу текущего фрейма стека.
- ESP: «Расширенный указатель стека» — часто используется как указатель на вершину текущего фрейма стека.