我有一个MIPS64二进制文件(readelf
告诉我它是版本2),使用相应的objdump
,我可以看到__start
的第一条指令是:
1200009a0: 03e00025 move zero,ra
我不明白这一点。看the ISA [note] ,操作码(前六位)是000000₂
,对应于功能为100101₂
的“特殊”块(后六位) ):or
指令(参考第413页)。无论如何,我们看到move
无论如何都不是一条指令(参见§3.2)。
但是,我注意到文件中存在一些其他指令,并且这些指令已正确编码。
这是怎么回事?这是objdump
中的错误吗?我该如何解决?
[note] 显然,MIPS64有六个版本。修订版1-5与大多数版本兼容,而发行版6则更改了许多内容。我找不到版本2的规范,所以我链接了版本5。move
至少在版本1、5或6中没有出现,这是我可以找到的所有规范。