После небольшого перерыва я возвращаюсь к своим приключениям по сборке 68K! Это будет короткий пост с описанием мнемоники 68K.

Общий образец мнемоники 68K:

объект action.length [, пункт назначения]

Где «действие» — мнемоника, обычно английский глагол, описывающий выполняемое действие, иногда с загадочной аббревиатурой, обозначающей целую фразу.

«Длина» обозначает количество битов, с которыми мы имеем дело. 68K может работать с байтами (8 бит), словами (16 бит) и длинными словами (32 бит), поэтому «длина» — это одна из трех букв: b для «байта», w для «слова» или l для «слова». длинное слово».

«Объект» — это то, чем мы манипулируем. Это могут быть необработанные литеральные данные (обозначаемые знаком #), адрес памяти (обозначаемый знаком $) или имя регистра. Необработанные буквенные числовые данные могут быть выражены в десятичной записи (обозначается просто знаком #), двоичной записи (обозначается #%) или шестнадцатеричной записи (обозначается #$).

Наконец, «пункт назначения» именно таков: это место, куда направляется «объект» нашего «действия». «Назначение» является необязательным. Вы можете думать об этом как о втором операнде бинарного оператора. Мнемоники тоже можно рассматривать как операторы. В ассемблере 68K есть «унарные операторы» — например, clr, который устанавливает содержимое регистра или адрес памяти в 0. Такие инструкции не имеют «назначения», а только «объект». Возможные «типы» здесь включают имя регистра или адрес памяти.

Ко многим инструкциям применяются определенные правила в отношении совместимости типов операндов объект и назначение. Например, вы не можете добавить данные из адреса памяти к данным по другому адресу памяти — вам придется сначала переместить один из них в регистр; адресный регистр нельзя очистить напрямую инструкцией clr и т. д. Не буду вдаваться в подробности — их можно найти в наборе инструкций 68К, который можно скачать, например, здесь.

И это все! Очень простой. В следующий раз я планирую посмотреть, как осуществляется ввод-вывод в системе 68K!