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