В дополнение к тому, что Джерри и Стивен уже сказали.
Первые мысли, что вы должны попытаться быть консервативными с вашими кодами операций / инструкциями. Вступление в это началось с топора, ах, и ал. Есть ли добавленная стоимость при переходе к eax, чтобы обеспечить байтовый доступ к этому верхнему регистру (кроме поворотов или сдвигов, которые уже существуют, чтобы обеспечить это)? На самом деле, нет. Если вы выполняете байтовые операции, почему вы используете 32-битный регистр и почему используете старшие байты? Возможно, оптимизировать код по-другому, используя преимущества того, что доступно, или допуская то, что доступно, и используя преимущества в других областях.
Я думаю, что есть причина, по которой большинство наборов команд в мире не имеют этих четырех имен для одного и того же регистра. И я не думаю, что это патенты, которые в игре. В свое время это была, наверное, классная особенность или дизайн. Вероятно, его корни были в переходе людей с 8-битных процессоров на эту 8/16-битную штуку. Во всяком случае, я думаю, что ах, ах, аакс был плохим дизайном, и все учились на этом. Как сказал Стивен, у вас есть проблемы с аппаратным обеспечением, если вы должны были строго реализовать это в прямой логике, то это беспорядок, гнездо муксов для крыс, чтобы все соединить (плохо для скорости и плохо для питания), тогда вы попадаете во время. кошмар, который бродил Стивен. Но есть история микрокодирования для этого набора команд, так что вы по сути эмулируете эти инструкции с каким-то другим процессором, и таким же образом он добавляет к этому кошмару. Мудрее всего было бы переопределить топор как 32-битный и избавиться от ах и ал. Мудро с точки зрения дизайна, но неразумно для мобильности (хорошо для разработки, плохо для маркетинга, продаж и т. Д.). Я думаю, что причина того, что этот усталый старый набор инструкций не ограничивается книгами по истории и музеями, (среди нескольких других причин) из-за обратной совместимости.
Я настоятельно рекомендую изучить ряд других наборов инструкций, как новых, так и старых. MSP430, ARM, большой палец, MIPS, 6502, Z80, PIC (старый, который не MIPS) и т. д. Просто назвать несколько. Видеть различия и сходства между наборами инструкций очень полезно для ИМО. И в зависимости от того, насколько глубоко вы углубляетесь в понимание (переменная длина слова по сравнению с фиксированной длиной и т. Д.), Понимая, какой выбор мы делаем для Intel при выполнении этого перехода с 16 на 32 бита, а в последнее время - с 32 на 64 бита, пытаясь сохранить долю рынка. .
Я думаю, что решение, которое они выбрали в то время, было правильным, вставив ранее неопределенный код операции перед тем, что обычно декодируется как 16-битный код операции, превращая его в 32-битный код операции. Или иногда нет, если нет следующих непосредственных значений (требующих знания того, сколько читать). Казалось, в соответствии с инструкцией, установленной в то время. Итак, вернемся к ответу Джерри, причина в том, что комбинация дизайна 8/16 битной инструкции задает историю и причины ее расширения. Разумеется, они могли бы так же легко использовать аналогичное кодирование для обеспечения доступа к старшим 16 битам в топоре, ах, как и раньше, и они могли бы так же легко умножить четыре базовых регистра A, B, C, D на 8 или 16. или 32 регистра общего назначения (A, B, C, D, E, F, G, H, ...), оставаясь при этом обратно совместимыми.