Поиск кодов операций и функций системного вызова MIPS - PullRequest
0 голосов
/ 19 апреля 2020

Итак, если системные вызовы mips являются инструкциями R-типа, это значит, что они должны иметь код операции и код функции, правильно?

Я понимаю, что код операции должен быть двоичным 0x000000, поскольку это инструкция R-типа, но как мне найти код функции для различных системных вызовов mips?

Мне нужно знать коды функций для этих syscalls:

syscall #print integer
syscall #print string
syscall #terminate

Я нашел только один ресурс в сети, который имеет код функции, но кажется общим: https://www.d.umn.edu/~gshute/mips/rtype.xhtml

Это говорит о функции код для системного вызова: 001100

Это действительно функциональный код для всех трех из этих ^? (печать int, печать строки, завершение)

Не думаю, что так должно быть, но я не совсем уверен.

1 Ответ

1 голос
/ 19 апреля 2020

номеров функций системного вызова передаются в регистре, например, $v0 для системных системных вызовов MARS, о ​​которых вы говорите. https://courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.html Это зависит от программного обеспечения в обработчике системного вызова для их реализации (в реальной системе MIPS).

Номер вызова не , закодированный в syscall сама инструкция; вот почему syscall не принимает операнды в синтаксисе asm, и поэтому вам нужно li $v0, 1 перед syscall, чтобы получить поведение целочисленной печати. ​​

Поле funct кодировки R-типа syscall - это 001100, при условии, что указанная вами страница верна. Это не имеет абсолютно никакого отношения к тому, что делает обработчик системных вызовов, основываясь на просмотре $v0.

...