assembly - 查找 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,打印字符串,终止)
我认为不应该,但我不完全确定。
解决方案
系统调用函数号在寄存器中传递,例如$v0
您正在谈论的 MARS 玩具系统调用。https://courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.html由系统调用处理程序中的软件来实现它们(在真正的 MIPS 系统上)。
索书号未在syscall
指令本身中编码;这就是为什么syscall
在 asm 语法中不使用操作数的原因,以及为什么您需要li $v0, 1
提前syscall
获得 print-integer 行为。
的funct
R 型编码的字段syscall
是001100
,假设您链接的页面是正确的。这与系统调用处理程序基于查看$v0
.
推荐阅读
- installshield - 已发布安装程序错误地具有更高版本,例如 1.6 当前安装程序项目具有 1.1 版本 需要将 1.5 升级到 1.1
- microsoft-teams - 无法重新创建已删除的频道
- git - 为什么在 gitlab/git merge-request/merge 期间我得到一个分离的 HEAD?
- vb.net - 在 VB.NET 中使用 datediff 时出现转换错误
- java - Java是前端技术,php是后端技术。我怎么能连接两者?
- rust - 如何从 OsStr 和 str 组件构建 URL?
- android - motionlayout - 转换完成时视图隐藏
- kubernetes - 在 Kubernetes 中检索服务的全名
- asp.net - 域模型类拆分为单独的程序集
- amazon-web-services - AWS EC2 C3 系列实例类型上的 java 服务 (tomcat) 中的内存泄漏