首页 > 解决方案 > 查找 MIPS 系统调用的操作码和功能码

问题描述

因此,如果 mips 系统调用是 R 型指令,那意味着它们应该有一个操作码和一个功能码,对吗?

我知道操作码应该是二进制 0x000000,因为它是 R 型指令,但是如何找到各种 mips 系统调用的功能代码?

我需要知道这些系统调用的功能代码:

syscall #print integer
syscall #print string
syscall #terminate

我在网上只找到了一个具有功能代码的资源,但它看起来很一般: https ://www.d.umn.edu/~gshute/mips/rtype.xhtml

它说系统调用的功能代码是:001100

这真的是所有这三个 ^ 的函数代码吗?(打印int,打印字符串,终止)

我认为不应该,但我不完全确定。

标签: assemblymipsmips32machine-code

解决方案


系统调用函数号在寄存器中传递,例如$v0您正在谈论的 MARS 玩具系统调用。https://courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.html由系统调用处理程序中的软件来实现它们(在真正的 MIPS 系统上)。

索书号syscall指令本身中编码;这就是为什么syscall在 asm 语法中不使用操作数的原因,以及为什么您需要li $v0, 1提前syscall获得 print-integer 行为。

functR 型编码的字段syscall001100,假设您链接的页面是正确的。这与系统调用处理程序基于查看$v0.


推荐阅读