Скачиваний:
19
Добавлен:
03.06.2014
Размер:
296.45 Кб
Скачать

3.5. Способы адресации

В курсовой работе необходимо реализовать следующие способы адресации:

  • Непосредственная, при которой в команде требуется присутствие константы, задаваемой непосредственным операндом.

  • Относительная, при которой для получения адреса операнда, используется суммирование хранимого в регистре адреса и смещения задаваемого непосредственным операндом.

  • Прямая, при которой операнд (регистр) явно указывается в команде.

3.6. Система команд

Все команды делятся на команды центрального процессора (табл. 2) и команды сопроцессора.

Среди команд центрального процессора выделяют следующие типы команд:

  • Команды обращения к памяти по чтению и записи.

  • Арифметические команды с фиксированной точкой.

  • Логические команды.

  • Команды сдвигов.

  • Команды условных и безусловных переходов.

  • Команды загрузки в регистр непосредственных операндов и копирование значений из одних регистров в другие.

  • Команды ввода-вывода.

  • Команды управления вычислительным процессом.

3.6.1. Команды обращения к памяти

В эту группу включено 8 команд:

  • LB REC, <SR1 + Imm> –осуществляет чтение байта из памяти по адресу <SR1 + Imm> и записывает его в один из 32-х регистров, заполняя неиспользуемые разряды его знаком.

  • LBU REC, <SR1 + Imm> –осуществляет чтение байта из памяти по адресу <SR1 + Imm> и записывает его в один из 32-х регистров. Неиспользуемые биты заполняются нулями.

  • LWU REC, <SR1 + Imm> –читает слово, расположенное по адресу <SR1 + Imm> и записывает значение в биты 31-0 одного из 32-х регистров. Биты 63-32 заполняются нулями.

  • LW REC, <SR1 + Imm> –аналогична предыдущей команде, только биты 63-32 заполняются знаком слова.

  • LDW REC, <SR1 + Imm> –читает двойное слово, расположенное по адресу <SR1 + Imm> и записывает старший его разряд в регистр REC, а младший – в регистр SR2.

  • SDW <SR1 + Imm>, SR2 – записывает содержимое регистра SR2 в память по адресу

<SR1 + Imm>.

  • SW <SR1 + Imm>, SR2 – записывает биты 31-0 регистра SR2 в память по адресу

<SR1 + Imm>.

  • SB <SR1 + Imm>, SR2 – записывает биты 8-0 регистра SR2 в память по адресу

<SR1 + Imm>.

Команды этой группы не оказывают воздействия на флажки и доступны как в режиме супервизора, так и в режиме пользователя. Команды этой группы используют формат команд представленный на рис.5. Поле P используется как биты 9 и 10 непосредственного операнда.

3.6.2. Арифметические команды с фиксированной точкой

Группа арифметических команд состоит из 10 команд:

  • ADD REC, SR1, SR2 – к содержимому регистра SR1 прибавляет содержимоеSR2, результат заносится вREC. По результату выполнения команды изменяются флажкиZ, C, S, O.

  • ADDC REC, SR1, SR2 (ADDC REC, SR1, Imm) – действует аналогичноADD, отличие заключается в прибавлении к результату значения флага С.

  • SUB REC, SR1, SR2 – из регистра SR1 вычитается SR2, если SR2 указывает на регистр отличный от REC. Результат заносится в регистр REC. При выполнении команды изменяются флажки Z, C, S, O.

  • SUBB REC, SR1, SR2 – аналогична команде SUB, но из результата получаемого командойSUBвычитается значение флажка С до выполнения операции.

  • MUL SR3:REC, SR1, SR2 – реализует операцию умножения без знака регистров SR1 иSR2. Младшее слово результата заносится в регистрREC, старшее слово результата вSR3.Если оно совпадает сREC,то старший байт не сохраняется. Флажки С и S устанавливаются в случае если старшее слово результата отлично от нуля. Кроме этих флажков при выполнении команды может измениться значение флажковZ, O.

  • MULS SR3:REC, SR1, SR2 – аналогична операцииMUL, но выполняет знаковое умножение. Флажки С иS сбрасываются, кроме случая, когда старшее слово заполнено всеми нулями, так же в случае если старшее слово содержит все единицы.

  • DDIV REC, SR4, SR1: SR2, SR3 (DDIV REC, SR1: SR2, SR3) – выполняет деление128-битного числа, хранимого в паре регистровSR1-SR2,наSR3. Остаток может заносится вSR4,еслиSR4не совпадает сREC.Если делится64-битное число, тоSR2содержит номер регистраSR1. Если результат деления не помещается в регистреREC, то устанавливается флагO. Если производится деление на ноль, то устанавливается флагC.

  • DDIVS REC, SR4, SR1: SR2, SR3 (DDIVS REC, SR1: SR2, SR3) – выполняет деление со знаком.

  • DIV REC, SR1, SR2 – делит 64-разрядное число, хранимое в SR1 на значениеSR2, результат заносится в регистрREC. Остаток не вычисляется. Флаги С иO устанавливаются при делении на ноль.

  • DIVS REC, SR1, SR2 – выполняет деление с учетом знака. Логика установки флажковZ, C, S иO, такая же как и предыдущей команде.

3.6.3. Логические команды

В разрабатываемый процессор включены четыре логические команды AND REC,SR1,SR2; OR REC,SR1,SR2; XOR REC,SR1,SR2; NOR REC,SR1,SR2. Все команды используют два аргументаSR1 и SR2. После выполнения команды флажкиC иO устанавливаются в 0, флажкиZ иS могут изменяться.

3.6.4. Команды сдвига

Используется четыре типа команд сдвига:

  • SLL REC,SR1,SR2 ­– логический сдвиг влево.

  • SAL REC,SR1,SR2 (SALU REC,SR1,SR2) – арифметический сдвиг влево.

  • SLR REC,SR1,SR2 – логический сдвиг вправо.

  • SAR REC,SR1,SR2 (SAR REC,SR1,SR2) – арифметический сдвиг вправо

Старший бит P показывает, что сдвиг значения SR1 осуществляется на значение SR2, младший бит P используется только при арифметическом сдвиге и задает сдвиг: при 0 без знака, при 1 со знаком. При логическом сдвиге сдвиг осуществляется через флажок С. В результате выполнения команды изменяется значения флажков Z, S, C. Флажок С содержит бит, выдвигаемый за пределы регистра.

3.6.5. Команды условных и безусловных переходов

Команды условных и безусловных переходов состоят из двух команд:

  • J SR1 (JZ SR1; JNZ SR1; JC SR1; JNC SR1; JS SR1; JNS SR1; JO SR1; JNO SR1; JFB SR1; JNFB SR1; JFZ SR1; JNFZ SR1; JFS SR1; JNFS SR1; JFO SR1; JNFO SR1) – переход по адресу хранимому в регистре, дополнительные параметры задаются в полеREC.

  • JIImm (JIZ Imm; JINZ Imm; JIC Imm; JINC Imm; JIS Imm; JINS Imm; JIO Imm; JINO Imm; JIFB Imm; JINFB Imm; JIFZ Imm; JINFZ Imm; JIFS Imm; JINFS Imm; JIFO Imm; JINFO Imm) – переход на 20-битный непосредственный операнд вперед или назад, дополнительные параметры задаются в поле С. Направление перехода задается знакомImm.

Дополнительный параметр содержит 5 бит:

V

0

С

4

3

2

0

Рис. 8

Где:

V – содержит значение флажка, при котором должен осуществляться переход.

C– задает код флажка, по которому производится переход:

000 – Z ЦП;

001 – C ЦП;

010 – S ЦП;

011 – O ЦП;

100 – B сопроцесора;

101 – Z сопроцесора;

110 – S сопроцесора;

110 – O сопроцесора.

3.6.6. Команды загрузки в регистр непосредственных операндов и копирование значений из одних регистров в другие

Команды загрузки в регистр непосредственных операндов и копирование значений из одних регистров в другие. Эта группа состоит из трех команд:

  • MOV REC, SR1, которая копирует операнд вRECсодержимое регистраSR1.

  • MOVH REC, Imm, копирующая непосредственный операнд в биты 32-63 регистраREC.

  • MOVL REC, Imm, копирующая непосредственный операнд в биты 0-31 регистраREC.

Выполнение команды этой группы не влияет на флажки.

3.6.7. Команды ввода-вывода

Группа состоит из двух команд:

  • OUT SR1, SR2 – записать в порт SR1значение регистраSR2.

  • IN REC, SR1 – прочитать из портаSR1в регистрREC.

Эти команды не воздействуют на флажки, но их выполнение возможно только в режиме супервизора.

3.6.8. Команды управления вычислительным процессом

Состоят из команд загрузки системных регистров,чтение содержимого системных регистров, системных вызовов:

  • MFFL REC – возвращает регистр флажков.

  • MTFL SR1 – записывает число в регистр флажков. ПриU=1 невозможна запись в младшие 4 разряда.

  • LTR SR1 – загружает указатель наTSS текущей задачи по адресуSR1.

  • LIDT SR1 – загружает указатель на таблицу дискрипторов прерывания (IDT) изSR1.

  • SIDT REC – копирует указатель наIDT в регистр REC.

  • OTSS REC – записывает вREC TSS задачи, работающей перед текущей.

  • MOVLNK – записывает вREC адрес, с которого осуществлен переход.

  • EAR REC – прочитать неправильный адрес виртуальной памяти, на котором сгенерировано прерывание

  • INT SR1 – вызов прерывания, номер которого хранится вSR1. Устанавливает флажкиIиT центрального процессора.

  • WAIT– ожидание конца вычислений сопроцессора.

Значения символов обозначающих состояния флажков следующие:

  • + значение флажка может измениться в результате выполнения команды;

  • значение не изменяется;

  • ?значение флажка влияет на работу команды.

  • 0 для выполнения команды требуется чтобы флажок был в0;

  • 1 для выполнения команды требуется чтобы флажок был в 1.

Таблица 2. Команды ЦП

Мнемоника

Название

Содержание

Флажок

Код

Z

C

S

O

I

T

U

1

LB

Прочитать байт

REC <SR1+Imm>

17

2

LBU

Прочитать байт без знака

REC <SR1+Imm>

18

3

LW

Прочитать слово

REC <SR1+Imm>

19

4

LWU

Прочитать слово без знака

REC <SR1+Imm>

20

5

LDW

Прочитать двойное слово

REC <SR1+Imm>

21

6

SDW

Записать двойное слово

<SR1+Imm> SR2

22

7

SW

Записать слово

<SR1+Imm> SR2

23

8

SB

Записать байт

<SR1+Imm> SR2

24

9

ADD

Сложение

REC SR1 + SR2

+

+

+

+

03

10

ADDС

Сложение с переносом

REC SR1 + SR2

+

?+

+

+

04

Таблица 2. Команды ЦП (продолжение)

Мнемоника

Название

Содержание

Флажок

Код

Z

C

S

O

I

T

U

11

SUB

Вычитание

REC SR1 – SR2

+

+

+

+

05

12

SUBB

Вычитание с заемом

REC SR1 – SR2

+

?+

+

+

06

13

MUL

Беззнаковое умножение

SR3 : REC SR1 * SR2

+

+

+

+

07

14

MULS

Умножение со знаком

SR3 : REC SR1 * SR2

+

+

+

+

08

15

DDIV

Беззнаковое деление

REC  SR3 : SR1 / SR2

+

+

+

+

09

16

DDIVS

Деление со знаком

REC  SR3 : SR1 / SR2

+

+

+

+

10

17

DIV

Беззнаковое деление

REC SR1 / SR2

+

+

+

+

11

18

DIVS

Деление со знаком

REC SR1 / SR2

+

+

+

+

12

19

AND

Логическое И

REC  SR1 & SR2

+

0

+

0

13

20

OR

Логическое ИЛИ

REC SR1 or SR2

+

0

+

0

14

21

XOR

Логическое

Исключающее ИЛИ

REC SR1 xor SR2

+

0

+

0

15

22

NOR

НЕ-ИЛИ

REC not (SR1 or SR2)

+

0

+

0

16

23

SLL

Логический cдвиг влево на SR2

+

+

+

25

24

SAL

Арифметический сдвиг влево на SR2

+

+

+

26

25

SLR

Логический сдвиг вправо на SR2

+

+

+

27

26

SAR

Арифметический сдвиг вправо на SR2

+

+

+

28

27

MOV

Переслать данные

REC SR1

02

28

MOVL

Записать непосредственный операнд в четверть, определяемую P, нижнюю половину (биты 0-31) регистра REC

REC Imm

00

29

MOVH

Записать непосредственный операнд в четверть, определяемую P, верхнюю половину (биты 32-63) регистра REC

REC Imm

01

30

J

Переход, код условия задается вместо REC.

PC SR1

?

?

?

?

+

29

31

JI

Относительный переход

PC PC + Imm

?

?

?

?

30

32

IN

Прочитать значение из порта SR1 в регистр REC

1

31

33

OUT

Записать в порт SR1

значение из SR2

1

32

34

MFFL

Прочитать состояние регистра флажков

REC FL

?

?

?

?

?

?

?

33

35

MTFL

Записать состояние регистра флажков

FL SR1

+

+

+

+

+

+

?+

34

36

LTR

Загрузить указатель на TSS текущей задачи по адресу SR1

<SR1> TSS

1

35

37

LIDT

Загрузить указатель на таблицу дискрипторов прерывания (IDT) из SR1

IDT SR1

1

36

38

OTSS

Записывает в REC TSS задачи, работающей перед текущей

REC TSS

1

37

39

MOVLNK

Чтение данных из регистра Link

REC Link

38

40

EAR

Прочитать неправильный адрес виртуальной памяти

REC 

1

39

41

WAIT

Ожидать завершения вычисления сопроцессора

40

42

INT

Вызов прерывания

+

+

41

Соседние файлы в папке Материалы по Архитектуре