Это не ассемблер, а основной машинный язык, который предотвращает эти операции.
Несмотря на то, что сборка состоит из легко читаемых слов или мнемоник, на самом деле они представляют собой непосредственно единицы и единицы машинного кода. В процессорах x86 каждая инструкция обычно состоит из последовательности байтов с индивидуальными байтами или даже битами внутри байтов, имеющих значение. Некоторые биты представляют команду, другие представляют режим адресации . В режимах адресации регистров, таких как ваши примеры, некоторые биты представляют, какие конкретные регистры должны использоваться в качестве источника и назначения инструкции mov
.
Теперь семейство процессоров x86 прошло долгий путь к 1970-м годам, когда архитектура ЦП была проще. В те дни концепция аккумулятора имела ключевое значение - ax
- это 16-разрядный аккумулятор x86. Все расчеты были построены или «накоплены» в этом регистре, чтобы он был доступен для всех инструкций. Другие регистры общего назначения имели более ограниченный диапазон использования.
Поскольку инструкции были основаны на байтах, вы хотели, чтобы как можно меньше байтов представляло команду, чтобы обеспечить быстрое декодирование команд. Для того, чтобы как можно больше инструкций было максимально коротким, использование аккумулятора сделано центральным.
На более современных процессорах, таких как Motorola 680x0, регистры общего назначения имеют больше возможностей, которые ранее были областью накопителя. На процессорах RISC все регистры так же гибки, как и аккумуляторы. Я слышал, что в 64-битном режиме текущий набор команд x86 / amd64 теперь намного менее ограничен.