有没有人知道我可以找到32位MIPS指令/操作码列表的网站,具有以下功能:
我知道很多网站都记录了指令集的“一部分”,主要用于教学目的。他们倾向于遗漏或仅部分描述浮点和特权指令。
如果你想知道,我正在研究Mil处理器子集的Verilog代码,并试图弄清楚它在多大程度上符合任何真正的MIPS处理器的指令集!谢谢你的任何指示。
答案 0 :(得分:6)
好的,我找到了什么!
MIPS提供了一套“MIPS 32参考手册”,它们引用了最新的标准化指令集(MIPS32v2):here
除了关于指令源自哪个版本的信息外,这几乎包括所有内容: - (
等待证券交易委员会......
This class website at Cornell包含显示指向同一手册的链接,但实际上是旧版本的和volume 2事实上,旧版本确实包含有关何时首次引入说明的信息。哇噢!
为什么MIPS会从修订后的文档中删除此信息?修订历史中似乎没有任何解释。
答案 1 :(得分:3)
我只能部分回答这个问题:如果你还没有提到它,我会推荐Dominic Sweetman的See MIPS Run。我有本书的第一版,第二版现在是最新版本。
第一版提到了内核。主管和用户权限级别,但不讨论每个级别允许的操作。我不知道第二版有什么变化。
答案 2 :(得分:3)
不包含指令描述,但GNU汇编程序的源代码可能与您可以获得的有关哪些特定CPU的指令一样详细。
获取binutils并查看操作码/ mips - *。c
答案 3 :(得分:1)
当前的指令集参考手册是免费在线的:MIPS® Architecture for Programmers Volume II-A: The MIPS32® Instruction Set Manual。该链接是修订版6.06 2016年12月15日。(即文件MIPS32 Release 6)。
它记录了所有用户和管理程序/内核模式指令,以及所有浮点,包括其机器代码编码的完整详细信息,以及显示它们执行操作的操作部分。它仍然记录了MIPS32版本6中删除的所有指令。(MIPS32 Release 6也围绕很多操作码进行了操作,并且有很好的文档记录)。
有关最新版本,请参阅https://www.mips.com/products/architectures/mips32/。 mips.com有一个“经典核心”部分,但仍然只能回到MIPS32,而不是历史。
balc
的“可用性和兼容性”部分示例(分支和链接压缩:没有分支延迟时隙,GRP31是隐式目标,为offset<<2
释放26位):
此指令由版本6引入并且必需。 版本6指令
BALC
占用与版本6之前相同的编码 指令SWC2
。SWC2
指令已移至COP2
MIPS版本6中的主要操作码
或LDXC1 fd, index(base)
(加载双字索引到浮点)
此指令已在第6版中删除。 从MIPS64版本1开始,在MIPS64的所有版本中都是必需的。在MIPS32版本1中不可用。需要 MIPS32 Release 2和MIPS32的所有后续版本。必要时,只要FPU存在, 无论是32位还是64位FPU,无论是32位还是64位FP寄存器模式(FIRF64 = 0或1,StatusFR = 0或1)。
对于历史记录,我在cmu.edu网页上找到了MIPS IV Instruction Set
Revision 3.2
September, 1995 。它列出了何时引入指令,例如div
的MIPS I,dmult
的MIPS III和其他64位指令,ll
/ sc
的MIPS II。
答案 4 :(得分:0)