Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 курс 1 семестр / лекции / Лекция 2 Процессор MIPS

.pdf
Скачиваний:
37
Добавлен:
27.12.2022
Размер:
858.64 Кб
Скачать

MIPS использует и побайтовую адресацию памяти.

В этом случае каждый байт памяти имеет уникальный адрес. 32-битное слово состоит из четырёх байтов, адрес каждого слова (англ.: word address) теперь кратен четырём, чтобы иметь возможность адресации его байтов. Адрес слова - это порядковый номер слова, умноженный на четыре.

Примеры кода доступа к памяти.

Команда Регистр

Адрес

Смысл команды № слова Данные слова

Откуда-куда

 

 

 

 

 

 

 

 

 

lw

$s0,

0($0)

#read data

word 0

(0xABCDEF78)

Из пам. в

$s0

 

 

 

 

 

 

 

регистр

 

lw

$s1,

8($0)

#read data

word 2

(0x01EE2842)

Из пам. в

$s1

lw

 

 

#

 

 

 

регистр

 

$s2,

C($0)

read data

word 3

(0x40F30788)

Из пам. в

$s2

 

 

 

 

 

 

 

регистр

4

 

 

 

 

 

 

 

Из регистра

sw

$s3,

4($0)

#

write $s3

данные

word $s3

в пам. по

 

адресу…

 

 

 

 

 

 

 

 

Из регистра

15

sw

$s4,

0xF($0)

#write $s4

данные

word $s4

в пам. по

 

адресу…

 

Арес слова или данных кратен 4, чтобы имелась возможность адресации каждого байта составляющего слова.

MIPS также включает инструкции lb и sb, которые загружают и сохраняют отдельные байты, а не слова. Они похожи на инструкции lw и sw.

Для единообразия представлением команд в машинном языке необходимо, чтобы каждая команда занимала бы ровно одно слово памяти, т.е. 32 бита.

В архитектуре MIPS в качестве компромисса используются три формата инструкций:

типа R – регистровый (англ.: register – рус. регистр); типа I - быстрый (англ.: Immediate – рус. немедленно);

типа J – переход (англ.: Jumр – рус. прыжок, переход ).

Инструкции типа R используют три регистровых операнда.

Инструкции типа I используют два регистровых операнда и

16-битную константу.

Инструкции типа J используют один регистровый операнд в качестве адреса.

- - Формат инструкции типа R – 32b информации

6b

5b

 

5b

5b

5b

 

6b

31

26 25

21 20

16 15

11 10

6

5

0

Поля, определяющие тип инструкции R:

op (opcode) - операционный код инструкции (6 b- информации); funct - функция (для инструкции funct 6 b – информации);

Поля операндов:

rs, rt – коды полей адресов регистров –источников (англ. register source – источники регистра по 5 b информации);

rd – код поля адреса регистра результата (5 b информации). Поле, shamt, используется только для операций сдвига (англ.: shift amount 6b информации).

Машинный код для инструкции типа R в десятичном и шестнадцатеричном исчислении.

Выводы: 1. Поля величин представлены в десятичном коде; 2. В машинном коде эти поля представлены в двоичном коде;

2. Рассмотрены 2 операции «+» и «-» , у которых одинаковый ОР и разный код функций funct: «+» 32d и «-» 34d

Формат инструкции типа I.

Использует два регистровых операнда и 16-битную константу.

Первые три поля (op, rs) аналогичны таким же полям в инструкциях типа R

Поле imm (immediate) содержит 16-битную константу.

Поля rs и imm всегда используются как операнды-источники. Поле rt содержит номер регистра-назначения, как и в некоторых командах (например, addi и lw), а в других (например, sw) - номер регистра-источника (что бы знать откуда взять данные rt+imm и по какому адресу rs памяти их поместить).

Инструкции типа I содержат 16-битную константу imm, которые однако

участвуют в 32-битных операциях.

ПОЭТОМУ 16-битные константы сначала будут расширены до 32 бит следующим образом: у неотрицательных констант верхние 16 бит дополняются нулями, а у отрицательных констант они будут заполнены единицами с учетом представления числа в дополнительном коде.

Этот приём называется расширением знака: N-битное число расширяется знаком до М-битного числа (М > N) путём копирования знакового (старшего) бита N-битного числа во все старшие биты М-битного числа.

8

17

16

5

8

19

8

-12

 

 

 

 

35

0

10

32

43

9

17

4

 

 

 

 

001000

10001

10000

0000 0000 0000 0101

001000

10011

01000

111111111111 0100

100011

00000

01010

0000 0000 0010 0000

101011

01001

10001

0000 0000 0000 0100

 

 

 

16 битная константа

тип I OP Rs

Rt

Im

 

Поля величин в

десятичном коде

Машинный код инструкции

Формат инструкции типа J

Этот формат используется только для инструкций безусловного перехода и ветвления.

В формате команд этого типа определён только один 26-битный операнд в качестве адреса: addr.

6b 26 b адрес перехода

ор adr

3. Расшифровка машинных кодов.

Расшифровка полей каждой 32-битной команды необходима, чтобы понимать язык машины. Для разных команд определены разные форматы (например, команды типа R,I,J) но во всех форматах команды начинаются с 6-битного поля opcode. Если оно равно 0, то это команда типа R, иначе это команда типа I или J.

Имеем машинные коды в шестнадцатиричном исчислении.

0x2237FFF1 0x02F34022

Переведем их на язык ассемблера.

Поля величин в дес. занчении

Направление записи кода по тетрадам

Пояснения1:0x2237FFF1

Пояснения 2: 0x02F34022

прямой код 0000 0000 0000 1111b=15d

000000b=0d

10111b=23d 10011b=19d

дополнительный код

01000b=8d

00000b=0d 100010b=34d

1111 1111 1111 0001b =-15 d