ПРИЛОЖЕНИЕ A
ВЫРАБОТКА КОДОВ УСЛОВИЙ
A.1 ВВЕДЕНИЕ
Данное Приложение описывает, как были определены требуемые коды условий, какие значения они принимают, как они вычисляются и как они отражены в системе команд.
При выборе кодов условий использовались следующие критерии:
- согласованность по командам
- универсальность
- независимость
- содержательность результатов - значение не изменяется, если это не дает полезной информации.
Согласованность по командам означает, что команда, являющаяся частным случаем более общей команды, вырабатывает признаки аналогичным способом. Универсальность означает, что если команда в некоторой ситуации вырабатывает признак, то она всегда затрагивает данный признак. Независимость означает, что операции сравнения, тестирования и пересылки вырабатывают одни и те же значения признаков. Проверки, используемые для условных операций и вычисления кодов условий, приведены в разделе A.5.
A.2 РЕГИСТР КОДОВ УСЛОВИЙ
Регистр состояния процессора содержит пять битов условий:
N - бит знака
Z - бит равенства нулю
V - бит переполнения
C - бит переноса
X - бит расширения
Первые четыре бита являются настоящими кодами условий в том смысле, что они характеризуют результат операции, выполненной процессором. Бит X используется как операнд при вычислениях с повышенной точностью. В целях упрощения формальной модели процессора бит переноса (C) и бит расширения для операций с повышенной точностью (X) в микропроцессорах семейства M68000 реализованы раздельно.
A.3 ОПИСАНИЕ РЕГИСТРА КОДОВ УСЛОВИЙ
В ПРИЛОЖЕНИИ B, содержащем подробную характеристику набора команд, описание вырабатываемых кодов условий дается в следующей форме:
Коды условий:
X N Z V C
----T---T---T---T---¬
¦ ¦ ¦ ¦ ¦ ¦
L---+---+---+---+---где:
N (знак) - устанавливается, если старший бит результата операции равен 1; в противном случае сбрасывается.
Z (равенство нулю) - устанавливается, если результат равен нулю; в противном случае сбрасывается.
V (переполнение) - устанавливается, если произошло арифметическое переполнение, т.е. размер операнда недостаточен для представления результата; в противном случае сбрасывается.
C (перенос) - устанавливается, если при сложении произошел перенос из старшего бита или если при вычитании для старшего бита требуется заем; в противном случае сбрасывается.
X (расширение) - невидим для операций пересылки данных;
при арифметических операциях формируется аналогично биту C.
При описании вырабатываемых кодов условий используются следующие обозначения:
* устанавливается в соответствии с результатом операции
- операцией не изменяется
0 сбрасывается
1 устанавливается
U после операции неопределен
A.4 ВЫРАБОТКА КОДОВ УСЛОВИЙ
В большинстве случаев выполнение операций заключается в считывании значений операндов источника и приемника, вычислениях над ними и засылке результата по адресу приемника. При выполнении унарной операции считывается значение операнда-приемника, над ним производятся вычисления, после чего результат засылается по адресу приемника. В Таблице A-1 содержится подробная информация о том, как вырабатываются коды условий каждой из команд.
A.5 ПРОВЕРКА КОДОВ УСЛОВИЙ
В Таблице A-2 приведены названия и коды проверяемых условий, а также смысл осуществляемой проверки при выполнении условных команд. Проверка условия заключается в вычислении некоторой логической функции от текущих значений кодов условий. Если значение функции равно 1, то условие выполнено, или, как говорят, истинно. Если же значение функции равно 0, то условие не выполнено, т.е. ложно. Например, условие T истинно всегда, в то время как условие EQ истинно тогда и только тогда, когда установлен бит Z
в регистр кодов условий.
ЗАМЕЧАНИЕ
Следует обратить внимание на двусмысленный характер употребления термина "код условия": как кода признака результата (содержится в регистре состояния) и как кода проверяемого условия (содержится в слове операции выполняемой команды).
Таблица A-1. Выработка кодов условий
--------------T---T---T---T---T---T---------------------------¬
¦ команда ¦ X ¦ N ¦ Z ¦ V ¦ C ¦ особое определение ¦
+-------------+---+---+---+---+---+---------------------------+
¦ABCD ¦ * ¦ U ¦ ? ¦ U ¦ ? ¦C= десятичный перенос ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦Z=Z&~Rm&...&~R0 ¦
+-------------+---+---+---+---+---+---------------------------+
¦ADD,ADDI, ¦ * ¦ * ¦ * ¦ ? ¦ ? ¦V=Sm&Dm&~Rm v ~Sm&~Dm&Rm ¦
¦ADDQ ¦ ¦ ¦ ¦ ¦ ¦C=Sm&Dm v ~Rm&Dm v Sm&~Rm ¦
+-------------+---+---+---+---+---+---------------------------+
¦ADDX ¦ * ¦ * ¦ ? ¦ ? ¦ ? ¦V=Sm&Dm&~Rm v ~Sm&~Dm&Rm ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦C=Sm&Dm v ~Rm&Dm v Sm&~Rm ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦Z=Z&~Rm&...&~R0 ¦
+-------------+---+---+---+---+---+---------------------------+
¦AND, ANDI,EOR¦ - ¦ * ¦ * ¦ 0 ¦ 0 ¦ ¦
¦EORI,OR,ORI ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦MOVE,MOVEQ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦EXT,NOT,TAS ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦TST,CLR ¦ ¦ ¦ ¦ ¦ ¦ ¦
+-------------+---+---+---+---+---+---------------------------+
¦CHK ¦ - ¦ * ¦ U ¦ U ¦ U ¦ ¦
+-------------+---+---+---+---+---+---------------------------+
¦CHK2,CMP2 ¦ - ¦ U ¦ ? ¦ U ¦ ? ¦Z=(R=LB)v(R=UB) ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦C=(LB<=UB)&((R<LB)v(R>UB))v¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ v (UB<LB)&(R>UB)&(R<LB) ¦
+-------------+---+---+---+---+---+---------------------------+
¦SUB,SUBI, ¦ * ¦ * ¦ * ¦ ? ¦ ? ¦ V=~Sm&Dm&~Rm v Sm&~Dm&Rm ¦
¦SUBQ ¦ ¦ ¦ ¦ ¦ ¦ C=Sm&~Dm v Rm&~Dm v Sm&Rm ¦
+-------------+---+---+---+---+---+---------------------------+
¦SUBX ¦ * ¦ * ¦ ? ¦ ? ¦ ? ¦ V=~Sm&Dm&~Rm v Sm&~Dm&Rm ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ C=Sm&~Dm v Rm&~Dm v Sm&Rm ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ Z=Z&~Rm&...&~R0 ¦
+-------------+---+---+---+---+---+---------------------------+
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.