После небольшого перерыва я возвращаюсь к своим приключениям по сборке 68K! Это будет короткий пост с описанием мнемоники 68K.
Общий образец мнемоники 68K:
объект action.length [, пункт назначения]
Где «действие» — мнемоника, обычно английский глагол, описывающий выполняемое действие, иногда с загадочной аббревиатурой, обозначающей целую фразу.
«Длина» обозначает количество битов, с которыми мы имеем дело. 68K может работать с байтами (8 бит), словами (16 бит) и длинными словами (32 бит), поэтому «длина» — это одна из трех букв: b
для «байта», w
для «слова» или l
для «слова». длинное слово».
«Объект» — это то, чем мы манипулируем. Это могут быть необработанные литеральные данные (обозначаемые знаком #
), адрес памяти (обозначаемый знаком $
) или имя регистра. Необработанные буквенные числовые данные могут быть выражены в десятичной записи (обозначается просто знаком #
), двоичной записи (обозначается #%
) или шестнадцатеричной записи (обозначается #$
).
Наконец, «пункт назначения» именно таков: это место, куда направляется «объект» нашего «действия». «Назначение» является необязательным. Вы можете думать об этом как о втором операнде бинарного оператора. Мнемоники тоже можно рассматривать как операторы. В ассемблере 68K есть «унарные операторы» — например, clr
, который устанавливает содержимое регистра или адрес памяти в 0. Такие инструкции не имеют «назначения», а только «объект». Возможные «типы» здесь включают имя регистра или адрес памяти.
Ко многим инструкциям применяются определенные правила в отношении совместимости типов операндов объект и назначение. Например, вы не можете добавить данные из адреса памяти к данным по другому адресу памяти — вам придется сначала переместить один из них в регистр; адресный регистр нельзя очистить напрямую инструкцией clr
и т. д. Не буду вдаваться в подробности — их можно найти в наборе инструкций 68К, который можно скачать, например, здесь.
И это все! Очень простой. В следующий раз я планирую посмотреть, как осуществляется ввод-вывод в системе 68K!