Функции системного вызова
Содержание
MIPS доступны в MARS Функции системного вызова
MIPS доступны в MARS
Введение
Настройки
Системные вызовы
ИДЕ
Отладка
Команда
Инструменты
История
Ограничения
Обработчики исключений
Макросы
Благодарности
Дом МАРС
Функции SYSCALL доступны в MARS
Введение
Ряд системных служб, в основном для ввода и вывода, доступен для использования
ваша программа MIPS. Они описаны в таблице ниже.
Содержимое регистра MIPS не затрагивается системным вызовом, за исключением регистров результатов
как указано в таблице ниже.
Как использовать системные службы SYSCALL
Шаг 1. Загрузите номер службы в регистр $v0.
Шаг 2. Загрузите значения аргументов, если они есть, в $a0, $a1, $a2 или $f12, как указано.
Шаг 3. Выполните инструкцию SYSCALL.
Шаг 4. Получить возвращаемые значения, если таковые имеются, из регистров результатов, как указано.
Пример: отобразить значение, хранящееся в $t0, на консоли
li $v0, 1 # сервис 1 выводит целое число add $a0, $t0, $zero # загрузить нужное значение в регистр аргументов $a0, используя псевдооперацию системный вызов
Таблица доступных услуг
Сервис | Код в $ V0 | Аргументы | Результат | ||
---|---|---|---|---|---|
Печать INTEGER | 1 | $ A0 = Integer для печати | $ A0 = Integer для печати | print float | 2 | $f12 = float to print |
print double | 3 | $f12 = double to print | |||
print string | 4 | $a0 = адрес строки с завершающим нулем для печати | |||
чтение целого числа | 5 | $v0 содержит целое число чтение | |||
read float | 6 | $f0 contains float read | |||
read double | 7 | $f0 contains double read | |||
read string | 8 | $a0 = адрес входного буфера $a1 = максимальное количество символов для чтения | См. примечание ниже таблицы | ||
sbrk (выделение памяти кучи) | 9 | $a0 = number of bytes to allocate | $v0 contains address of allocated memory | ||
exit (terminate execution) | 10 | ||||
print character | 11 | $ a0 = символ для печати | См. примечание в таблице ниже0089 | ||
открыть файл | 13 | $a0 = адрес завершающейся нулем строки, содержащей имя файла $a1 = флаги $a2 = режим | $v0 содержит дескриптор файла (отрицательный, если ошибка). См. примечание ниже таблицы | ||
чтение из файла | 14 | $a0 = дескриптор файла $a1 = адрес входного буфера $a2 = максимальное количество символов для чтения | $v0 содержит количество символов (0, если конец файла, отрицательный, если ошибка). См. примечание ниже таблицы | ||
запись в файл | 15 | $a0 = дескриптор файла $a1 = адрес выходного буфера $a2 = количество символов для записи | $v0 содержит количество записываемых символов ( отрицательный, если ошибка). См. примечание ниже таблицы | ||
закрыть файл | 16 | $a0 = дескриптор файла | |||
exit2 (завершить со значением) | 17 | $a0 = результат завершения | См. примечание ниже таблицы | ||
Службы с 1 по 17 совместимы с симулятором SPIM, кроме Open File (13), как описано в примечаниях под таблицей. Сервисы 30 и выше являются эксклюзивными для MARS. | |||||
время (системное время) | 30 | $a0 = младшие 32 бита системного времени $a1 = старшие 32 бита системного времени. См. примечание ниже в таблице | |||
MIDI-выход | 31 | $a0 = высота тона (0–127) $a1 = продолжительность в миллисекундах $a2 = инструмент (0–127) $a3 = громкость (0 -127) | Генерация тонального сигнала и немедленный возврат. См. примечание ниже таблицы | ||
сон | 32 | $a0 = время ожидания в миллисекундах. | Переводит Java-поток MARS в спящий режим (как минимум) на указанное количество миллисекунд. Это время будет неточным, так как реализация Java добавит некоторые накладные расходы. | ||
Синхронный выход MIDI | 33 | $a0 = высота звука (0-127) $a1 = продолжительность в миллисекундах $a2 = инструмент (0-127) $a3 = громкость (0-127) 9 9 | 9 Генерация тона и возврат после завершения тона. См. примечание ниже таблицы | | |
вывести целое число в шестнадцатеричном формате | 34 | $a0 = целое число для печати | Отображаемое значение представляет собой 8 шестнадцатеричных цифр, при необходимости дополняя их нулями слева. | ||
вывести целое число в двоичном формате | 35 | $a0 = целое число для печати | Отображаемое значение 32 бита, при необходимости дополняется нулями слева. | ||
вывести целое число как беззнаковое | 36 | $a0 = целое число для печати | Отображается как десятичное значение без знака. | ||
(не используется) | 37-39 | ||||
набор семян | 40 | $a0 = и.д. генератора псевдослучайных чисел (любой int). $a1 = начальное число для соответствующего генератора псевдослучайных чисел. | Значения не возвращаются. Задает начальное значение соответствующего базового генератора псевдослучайных чисел Java (java.util.Random). См. примечание ниже таблицы | ||
random int | 41 | генератора псевдослучайных чисел (любой int). | $a0 содержит следующее псевдослучайное, равномерно распределенное целочисленное значение из последовательности этого генератора случайных чисел. См. примечание к таблице ниже генератора псевдослучайных чисел (любой int). $a1 = верхняя граница диапазона возвращаемых значений. | $a0 содержит псевдослучайное, равномерно распределенное значение int в диапазоне 0 См. примечание ниже в таблице генератора псевдослучайных чисел (любой int). | $f0 содержит следующее псевдослучайное, равномерно распределенное значение с плавающей запятой в диапазоне 0,0 См. примечание ниже таблицы |
случайный двойной | 44 | $a0 = i.d. генератора псевдослучайных чисел (любой int). | $f0 contains the next pseudorandom, uniformly distributed double value in the range 0.0 See note below table | ||
(not used) | 45-49 | ||||
ConfirmDialog | 50 | $a0 = адрес строки с завершающим нулем, которая является сообщением для пользователя | $a0 содержит значение выбранной пользователем опции 0: Да 1: Нет 2: Отмена | ||
InputDialogInt | 51 | $a0 = адрес строки, заканчивающейся нулем, которая является сообщением пользователю 9089 $a0 содержит int read $a1 содержит значение состояния 0: состояние OK -1: входные данные не могут быть правильно проанализированы -2: выбрана отмена -3: выбрано OK, но данные не были введены в поле | |||
InputDialogFloat | 52 | $a0 = адрес строки с завершающим нулем, которая является сообщением для пользователя | $f0 содержит число с плавающей запятой $a1 содержит значение состояния 0: состояние OK -1: входные данные не могут быть правильно проанализированы -2: выбрано Отмена -3: выбрано ОК, но данные в поле не введены0089 | $f0 содержит двойное чтение $a1 содержит значение состояния 0: состояние OK -1: входные данные не могут быть правильно проанализированы -2: выбрана отмена -3: выбрано OK, но данные не были введены в поле | |
InputDialogString | 54 | $a0 = адрес завершаемой нулем строки, которая является сообщением для пользователя $a1 = адрес входного буфера $a2 = максимальное количество символов для чтения ниже таблицы $a1 содержит значение состояния 0: состояние OK. Буфер содержит входную строку. -2: выбрана Отмена. Никаких изменений в буфере. -3: выбрано ОК, но данные в поле не введены. Никаких изменений в буфере. -4: длина входной строки превышает указанный максимум. Буфер содержит максимально допустимую входную строку плюс завершающий нуль. | |||
MessageDialog | 55 | $a0 = адрес строки с завершающим нулем, которая является сообщением для пользователя $a1 = тип отображаемого сообщения: 0: сообщение об ошибке, обозначенное значком ошибки 1: информационное сообщение, обозначенное значком информации . 2: предупреждающее сообщение, обозначенное значком предупреждения . 3: сообщение с вопросом, обозначенное значком вопроса другое: обычное сообщение (значок не отображается) | Н/Д | ||
MessageDialogInt | 56 | $a0 = адрес строки с завершающим нулем, которая является информационным сообщением для пользователя $a1 = целочисленное значение для отображения в виде строки после первой строки | Н/Д | ||
MessageDialogFloat | 57 | $a0 = адрес завершаемой нулем строки, которая представляет собой информационное сообщение для пользователя $ f12 = число с плавающей запятой для отображения в виде строки после первой строки | Н/Д | ||
MessageDialogDouble | 58 | $a0 = адрес строки с завершающим нулем, которая является информационным сообщением для пользователя $f12 = двойное значение для отображения в виде строки после первой строки | Н/Д | ||
MessageDialogString | 59 | $a0 = адрес завершаемой нулем строки, которая является информационным сообщением для пользователя $ a1 = адрес строки с завершающим нулем, отображаемой после первой строки | Н/Д |
ПРИМЕЧАНИЯ. Услуги с номером 30 и выше не предоставляются SPIM
Служба 8 — следует семантике UNIX ‘fgets’. Для указанной длины n строка не может быть длиннее n-1. Если меньше, добавляет новую строку в конец. В любом случае дополняется нулевым байтом. Если n = 1, ввод игнорируется и нулевой байт помещается по адресу буфера. Если п Service 11 — Печатает символ ASCII, соответствующий содержимому младшего байта.
Служба 13 — MARS реализует три значения флага: 0 — только для чтения, 1 — только для записи с созданием и 9 — только для записи с созданием и добавлением. Он игнорирует режим. Возвращаемый файловый дескриптор будет отрицательным, если операция не удалась. Базовый файловый ввод-вывод
реализация использует java.io.FileInputStream.read() для чтения и java.io.FileOutputStream.write() для записи. MARS хранит файловые дескрипторы внутри и размещает их, начиная с 3. Файловые дескрипторы 0, 1 и 2
всегда открыт для: чтения из стандартного ввода, записи в стандартный вывод и записи в стандартную ошибку соответственно (новое в версии 4. 3).
Службы 13,14,15 — в MARS 3.7 регистр результата был изменен на $v0 для совместимости с SPIM. Ранее это было $a0, так как было напечатано ошибочно.
в Приложении B к Компьютерная организация и проектирование, .
Служба 17 — Если программа MIPS запускается под управлением графического интерфейса (GUI) MARS, код выхода в $a0 игнорируется.
Служба 30 — системное время поступает из java.util.Date.getTime() в миллисекундах с 1 января 1970.
Услуги 31,33 — Имитация вывода MIDI через звуковую карту. Подробности ниже.
Службы 40-44 используют базовые генераторы псевдослучайных чисел Java, предоставляемые классом java.util.Random. Каждый поток (идентифицированный
содержимым $a0) моделируется другим объектом Random. Начальных значений по умолчанию нет, поэтому используйте службу Set Seed (40), если
желательны повторяющиеся случайные последовательности.
Пример файлового ввода/вывода
Пример программы MIPS, приведенный ниже, откроет новый файл для записи, запишет в него текст из буфера памяти, а затем закроет его. Файл будет создан в
каталог, в котором запускался MARS.
# Пример программы MIPS, которая записывает в новый файл. # Кеннет Воллмар и Пит Сандерсон .данные fout: .asciiz "testout.txt" # имя файла для вывода буфер: .asciiz "Быстрая коричневая лиса перепрыгивает через ленивую собаку." .текст ################################################### ############## # Открыть (для записи) несуществующий файл li $v0, 13 # системный вызов для открытия файла la $a0, fout # имя выходного файла li $a1, 1 # Открыто для записи (флаги 0: чтение, 1: запись) li $a2, 0 # режим игнорируется syscall # открыть файл (дескриптор файла возвращается в $v0) move $s6, $v0 # сохранить дескриптор файла ################################################### ############## # Запись в только что открытый файл li $v0, 15 # системный вызов для записи в файл move $a0, $s6 # файловый дескриптор la $a1, buffer # адрес буфера, из которого производится запись li $a2, 44 # жестко заданная длина буфера системный вызов # запись в файл ################################################### ############## # Закрыть файл li $v0, 16 # системный вызов для закрытия файла переместите $a0, $s6 # файловый дескриптор для закрытия системный вызов # закрыть файл ################################################### ##############
Использование системных служб SYSCALL 31 и 33: MIDI-выход
Эти системные службы уникальны для MARS и предоставляют средства для воспроизведения звука. MIDI-выход есть
симулируется звуковой картой вашей системы, а симуляция обеспечивается javax.sound.midi
упаковка.
Служба 31 сгенерирует тональный сигнал, а затем немедленно вернется. Служба 33 будет генерировать тональный сигнал, а затем
спать в течение тона, прежде чем вернуться. Таким образом, он по существу объединяет службы 31 и 32.
Эта служба требует четыре параметра следующим образом:
шаг ($a0)быть представлен в MIDI 88-клавишное пианино начинается с 9-А и заканчивается на 108-С). из 12. | ||||||||||||||||||||||||||||||||
длительность в миллисекундах ($a1) | ||||||||||||||||||||||||||||||||
инструмент ($a2)«патч» используется для воспроизведения тона. (часто упоминается как программных изменений номеров), однако это не так. не определяет, как будет звучать тон. Это определяется синтезатором. что производит звук. Таким образом, Tuba (патч 58) на одном компьютере может звучать иначе, чем тот же патч на другом компьютере.
При обращении к списку патчей General MIDI необходимо вычесть 1. для воспроизведения правильного патча. Полный список инструментов General MIDI см. видеть www.midi.org/about-midi/gm/gm1sound.shtml. Карта перкуссионных клавиш General MIDI канала 10 не относится к метод toneGenerator, потому что по умолчанию он всегда использует MIDI-канал 1. | ||||||||||||||||||||||||||||||||
объем ($a3)молчит. Это значение обозначает скорость MIDI, которая относится к начальной атака тона. сообщение воспроизводится, возможно, на MIDI-контроллере, таком как клавиатура. Самый MIDI-синтезаторы преобразуют это в громкость в логарифмической шкале. в котором разница в амплитуде уменьшается по мере увеличения значения скорости. влияют на тембр тона (поскольку большинство инструментов звучат по-разному, когда они звучат громче или тише). |
Системная служба 31 была разработана и задокументирована студентом Оттербейна Тони Броком в июле 2007 года.
Марс Ли (李颖) — MyDramaList
0 Последователи
14 Сердца
- Имя: Ying
- Фамилия: LI
- Название: 李颖
- Также известно как: Mars, 毒药 毒药 李雪薇
- Дата рождения: 20 мая 1987 г.
- Возраст: 35
9 . Женщина
РазыскиваетсяКто самый любимый актер на MDL?
Избранное
Еженедельная цель поддержки MyDramaList
Help Support MyDramaList
Ningyou
3 edits
bojinator
2 edits
Best School Titles
Best High School Dramas
Top Romance Films
Top Manga Adaptations
Лучшие фэнтези-названия
Отношения по контракту
Лучшее за 2018 год
Лучшие романтические комедии [или лучшие романтические комедии]
Фильтрация по непросматриваемым?
21 минута назад
Из какой ты страны?
45 минут назад
Что вас больше всего волнует в этом сезоне?
1 час назад
Какой последний эпизод драмы вы смотрели? Часть 3
2 часа назад
Какой последний АЗИАТСКИЙ фильм вы смотрели?
2 часа назад
- Name: Mars Li
- Native name: 李颖
- Also Known as: Mars, 毒药, 李雪薇
- Nationality: Chinese
- Gender: Female
- Born: 20 мая 1987 г.
- Возраст: 35
Ли Сюевэй родился 20 мая 1987 года в провинции Сычуань. Она китайская поп-певица, актриса и ведущая. Она приняла участие в Chinas ‘Supergirl Competition.
Год | Титул | # | Роль | Рейтинг |
---|---|---|---|---|
уточняется | Дворянская принцесса Китайская драма, 0000, 24 эп. (второстепенная роль) | 24 | Роль поддержки | 0,0 |
2018 | Милый парень Китайская драма, 2018, 30 эп. Гу Сяо Тин | 30 | Гу Сяо Тин Роль поддержки | 10,0 |
2017 | Этот свист молодежи Китайская драма, 2017, 43 эп. Ян И | 43 | Ян И Основная роль | 8,4 |
2015 | Прекрасный секрет Китайская драма, 2015, 39eps (вспомогательная роль) | 39 | Роль поддержки | 7,3 |
Год | Титул | Роль | Рейтинг |
---|---|---|---|
2020 | Громовой генерал Ша Ву Цзин Китайский фильм, 2020, Тао Хуа [фея] | Тао Хуа [фея] Роль поддержки | 7,6 |
2017 | Только ветер знает Китайский фильм, 2017, Ян И | Ян И Основная роль | 7,0 |
Фактор Каваи в японских дорамах: женские роли
Редакционные статьи — 6 ноября 2022 г.
Что такое «Отона-каваи»? Давайте обсудим это, выделяя типы женских ролей, встречающихся в японских дорамах.
Лучшие из лучших: драматическое издание
Редакционные статьи – 12 ноября 2022 г.
По результатам голосования в молдавских леях вот хиты и промахи первого лучшего из лучших: драматическое издание.
Предстоящая корейская дорама «Остров» представляет свой первый трейлер! 8 ноября 2022 г.
Ли Чон Джун из Squid Game заменил Ли Чжи Хана в «Сезоне Ккок Ду»
Новости — 7 ноября 2022 г.
Возобновились съемки последней дорамы Ли Джи Хана «Сезон Ккок Ду», и наконец-то нашли замену.
Ким Су Хён, как сообщается, воссоединится со сценаристом «Моя любовь со звезды» в новой корейской драме!
News — 4 ноября 2022 г.
Ким Су Хён ведет переговоры о том, чтобы сыграть главную роль в новой корейской драме, написанной ведущим сценаристом Пак Чжи Ын.
Шин Дон Ук подтвердил свое возвращение в третий сезон «Доктора Романтика»
Новости — 7 ноября 2022 г.