在哪里可以找到*所有* MIPS 指令的描述,
-
02-07-2019 - |
题
有谁知道一个网站,我可以在其中找到 32 位 MIPS 指令/操作码的列表,具有以下功能:
- 清楚地区分实际操作码和汇编语言宏
- 描述指令行为,包括取决于权限级别的差异。
- 指示在哪个指令集修订版中引入/修订了指令(例如MIPS I、MIPS II、MIPS32 等)
- 包括特权指令,例如系统调用。
我知道有许多网站记录了指令集的“部分”,主要用于教学目的。他们倾向于省略或仅部分描述浮点和特权指令。
如果您想知道,我正在查看 MIPS 处理器子集的 Verilog 代码,并试图弄清楚它在多大程度上符合任何真正的 MIPS 处理器的指令集!感谢您的指点。
解决方案
我只能部分回答这个问题:我会推荐 请参阅 MIPS 运行 作者:Dominic Sweetman,如果您还没有提到的话。我有这本书的第一版,现在是第二版。
- 表 8.2 列出了每个操作码和预期行为,区分汇编器宏并列出它们分解为的指令。不幸的是,它不区分用户模式和内核模式。
- 表 8.6 列出了引入每条指令的 ISA 级别,包括 LSI MiniRISC 等晦涩的变体
- 系统调用出现在表中,但缺乏太多描述
第一版提到了内核。主管和用户权限级别,但没有讨论每个权限级别允许哪些操作。不知道第二版有哪些改动。
其他提示
好吧,我发现了一些东西!
MIPS 提供了一套“MIPS 32 参考手册”,其中引用了最新的标准化指令集(MIPS32v2): 这里
这些几乎包括所有内容,除了有关指令源自哪个版本的信息:-(
等一下...
康奈尔大学的此类网站 包括指向什么的链接 出现 是相同的手册,但实际上是 它的旧版本, , 和 第2卷 该旧版本的内容实际上包含有关首次引入说明的时间的信息。呜呼!
为什么 MIPS 会从修订后的文档中删除此信息?修订历史中似乎没有任何解释。
不包括指令描述,但 GNU 汇编器的源代码可能尽可能详细地说明了哪些指令在哪些特定 CPU 上可用。
得到 二进制工具 并查看 opcodes/mips-*.c
当前的指令集参考手册可在线免费获取: MIPS®架构II-A卷:MIPS32®指令集手册. 。该链接是修订版6.06 2016年12月15日。(IE。它记录了 MIPS32 版本 6).
它记录了所有用户和主管/内核模式指令以及所有浮点指令,详细记录了它们的机器代码编码,并通过操作部分显示了它们的作用。它仍然记录了 MIPS32 第 6 版中删除的所有指令。(MIPS32 Release 6 还移动了很多操作码,并且有详细记录)。
看 https://www.mips.com/products/architectures/mips32/ 获取最新版本。mips.com 有一个“经典内核”部分,但这似乎仍然只能追溯到 MIPS32,而不是历史的东西。
“可用性和兼容性”部分的示例 balc
(分支和链接紧凑:没有分支延迟槽,GRP31 是隐式目的地,为分支释放 26 位 offset<<2
):
此指令由版本 6 引入并要求。发布6指令
BALC
与预发行6指令相同的编码SWC2
. 。这SWC2
指令已移至COP2
MIPS Release 6 中的主要操作码
或者为了 LDXC1 fd, index(base)
(加载索引到浮点的双字)
该指令已在版本 6 中删除。自 MIPS64 Release 1 以来的所有 MIPS64 版本都需要。在 MIPS32 第 1 版中不可用。在MIPS32版本2和所有后续版本中,需要MIPS32。在需要时,无论何时存在FPU,无论是32位还是64位FPU,无论是32位还是64位FP寄存器模式(FIRF64 = 0或1,statusfr = 0或1)。
对于历史资料,我找到了 MIPS IV指令集修订版,1995年9月3日 在 cmu.edu 网页上。它列出了引入指令的时间,例如MIPS I 为 div
, MIPS III 为 dmult
和其他 64 位指令,MIPS II 用于 ll
/ sc
.