Материал: Архитектура и программирование MIPS-процессоров. Разинкин К.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Другие инструкции syscall

Довольно важная инструкция в MIPS ассемблере, которая использует системные вызовы операционной системы. Прежде чем использовать ее, нужно загрузить в регистр $v0 один из служебных кодов от 1 до 16 . Список кодов и соответствующих действий операционной системы:

1 — вывести на экран натуральное число, которое находится в регистре $a0.

2 — вывести на экран число с плавающей точкой, которое находится в регистре $f12.

3 — вывести на экран число с плавающей точкой

(двойная точность), которое находится в регистре $f12.

4 — вывести строку , которая находится в регистре $a0 (с нулевым символом).

5 — считать натуральное число и занести его в регистр

$v0.

6 — считать число с плавающей точкой и занести его в регистр $f0.

7 — считать число с плавающей точкой (двойная точность) и занести его в регистр $f0.

8 — считать строку, $a0 — адрес строкового буфера , $a1 — сколько символов нужно считать.

9 — ?

10 — выйти из программы.

11 — вывести символ в $a0.

12 — считать символ и занести его в $a0.

13 — открыть файл, $a0 — адрес нуль-строки, содержащей имя файла, $a1 — флаг, $a2 — режим. После операции $v0 будет содержать дескриптор файла.

14 — читать из файла, $a0 — дескриптор, $a1 — адрес входного буфера, $a2 — сколько символов прочитать. После операции $v0 будет содержать количество прочитанных символов.

106

15 — писать в файл, $a0 — дескриптор, $a1 — адрес выходного буфера, $a3 — сколько символов записать. После операции $v0 будет содержать количество записанных символов.

16 — закрыть файл, дескриптор находится в $a0.

Вменю выберите “Run…Assemble”. Окно “MarsMessages” в

нижней части экрана будет указано, если возникли какие-то ошибки. Ошибок не должно произойти.

Рис.3.2. Сообщения об ошибках

3. Моделирование

В меню выберите “Run…Go”, чтобы выполнить программу. Программа выполнит отображение двух строк текста и трех итераций цикла в окне Run I/O.

107

Рис.3.3. Запуск программы

Кнопки в верхней части окна можно использовать в качестве ярлыков для меню запуска. Используйте кнопку “Reset” для сброса программы, а затем попробовать трассировку через программу, нажав кнопку шаг.

Вы можете отрегулировать скорость выполнения программы, перемещая ползунок справа от кнопки. Если у вас есть бесконечный цикл в вашей программе, это может быть необходимо изменить (замедлить) скорость тренажера для предотвращения программа "Mars" от сбоев.

Основные управляющие элементы эмулятора MARS представлены в табл. 3.1.

108

Таблица 3.1 Основные управляющие элементы эмулятора MARS

Запустите программу. Если точка останова была установлена программа остановится на следующей точке останова.

Включить трассировку (пошаговую). Выполняет одну инструкцию. Если инструкция является вызовом процедуры (jal) тренажер останавливается на первой инструкции процедуры.

Backstep. Отменить последний шаг в код

Пауза в данный момент запущена программа. Нажмите кнопку выполнить, чтобы продолжать выполнение.

Остановить запущенные программы. Вам нужно сбросить тренажер для повторного выполнения программы после остановки его.

Сброс. Сбрасывает симулятор, повторная инициализация регистров, программного счетчика, памяти.

Регулирует скорость работы тренажера

109

3.2. Задания и упражнения

3.2.1. Приведите три примера из архитектуры MIPS для каждого из принципов хорошей разработки: (1) для простоты придерживайтесь единообразия, (2) типичный сценарий должен быть быстрым, (3) чем меньше, тем быстрее, (4) хорошая разработка требует хороших компромиссов. Поясните, как каждый из ваших примеров иллюстрирует соответствующий принцип.

3.2.2.Архитектура MIPS содержит набор 32-битных регистров. Можно ли создать компьютерную архитектуру без регистров? Если можно, кратко опишите такую архитектуру и её систему команд. Каковы преимущества и недостатки будут у этой архитектуры по сравнению с архитектурой MIPS?

3.2.3. Представьте себе 32-битное слово, хранящееся в адресуемой побайтово памяти и имеющее порядковый номер 42.

a)Каков байтовый адрес у слова памяти с порядковым номером 42?

b)Каковы все байтовые адреса, занимаемые этим словом памяти?

c)Предположим, что в этом слове хранится значение 0xFF223344. Изобразите графически, как это число хранится в байтах слова в случаях прямого и обратного порядка следова-

ния байтов. Отметьте байтовые адреса всех байтов данных.

3.2.4.Повторите упражнение 3.2.3. для 32-битного слова, имеющего порядковый номер 15 в памяти.

3.2.5.Объясните, как использовать следующую программу, чтобы определить, является ли порядок следования байтов прямым или обратным:

li $t0, 0xABCD9876

sw $t0, 100($0) lb $s5, 101($0)

3.2.6. Используя кодировку ASCII, запишите следующие строки в виде последовательностей шестнадцатеричных значе-

110

Источник: https://studfile.net/preview/16568788/