系统调用:
- 实现终端的输入输出,以及声明程序结束。
- 参数所使用的寄存器:$v0, $a0, $a1
- 返回值使用: $v0
- Service中的数据类型使用可参考:MIPS汇编语言学习笔记03:print HelloWorld 文章最下面的pdf文档。
Table: System services.
Service | System Call Code in v0(中断调用号) | Arguments(参数) | Result(返回值) |
print_int | 1 | $a0 = integer | |
print_float | 2 | $f12 = float | |
print_double | 3 | $f12 = double | |
print_string | 4 | $a0 = string | |
read_int | 5 | integer (in $v0) | |
read_float | 6 | float (in $f0) | |
read_double | 7 | double (in $f0) | |
read_string | 8 | $a0 = buffer, $a1 = length | |
sbrk | 9 | $a0 = amount | address (in $v0) |
exit | 10 | ||
print_character | 11 | $a0 = character | |
read_character | 12 | character (in $v0) | |
open | 13 | $a0 = filename, | file descriptor (in $v0) |
$a1 = flags, $a2 = mode | |||
read | 14 | $a0 = file descriptor, | bytes read (in $v0) |
$a1 = buffer, $a2 = count | |||
write | 15 | $a0 = file descriptor, | bytes written (in $v0) |
$a1 = buffer, $a2 = count | |||
close | 16 | $a0 = file descriptor | 0 (in $v0) |
exit2 | 17 | $a0 = value |
视频讲解:
参考文章:
https://www.doc.ic.ac.uk/lab/secondyear/spim/node8.html
https://www.cnblogs.com/thoupin/p/4018455.html
非常感谢您的讲解,对于我这样的小白来说真的很有帮助~