【问题标题】:Finding the op and funct codes of a MIPS syscall查找 MIPS 系统调用的操作码和功能码
【发布时间】:2020-08-01 11:08:07
【问题描述】:

所以如果 mips 系统调用是 R 型指令,这意味着它们应该有一个操作码和一个函数码,对吗?

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

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

syscall #print integer
syscall #print string
syscall #terminate

我在网上只找到了一个具有功能代码但看起来很一般的资源:@​​987654321@

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

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

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

【问题讨论】:

    标签: assembly mips mips32 machine-code


    【解决方案1】:

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

    电话号码没有syscall指令本身中编码;这就是为什么 syscall 在 asm 语法中不接受操作数,以及为什么需要在 syscall 之前使用 li $v0, 1 才能获得打印整数行为。

    syscall 的 R 型编码的 funct 字段是 001100,假设您链接的页面是正确的。这与系统调用处理程序基于查看$v0 所做的事情完全无关。

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多