
您还能告诉我如何对FC=00,01,10和11的值进行汇编程序操作吗?
当我在我的汇编程序上执行指令时,我找到了FC=11,但是我不知道它的意思。
发布于 2022-11-08 01:08:28
2位fc字段和下面的4位,两者结合在一起,实际上只是6位func字段。
我不知道为什么那些作者选择把它分割成两个并排的字段,因为它似乎并没有达到我所能看到的特定目的。
此外,尽管它们只为这几个指令将func字段分成两部分,但它们恢复到对所有其他指令描述的6位func字段的描述。
由于这个表示法,在寻找0x0,0x1,0x2,0x3的fc字段时,后面的4位是0xc,我们还可以查找0x0c、0x1c、0x2c和0x3c的func字段值,其中一些可以找到。
func值0x3c用于c.lt.s/d (当然,对于单变量和双值,适当的opcode=0x11和fmt=0x10/0x11 )。
func字段值0x0c用于round.w.s/d。
其他值,0x1c & 0x2c在文档中是找不到的,而且这种遗漏是典型的未使用操作码,因此有一种可能性是,这些代码确实是R2000的未使用操作码。
将46 00 0 0 3c输入https://disasm.pro/ (MIPS/大端)将产生适当的c.lt.s,而46 00 0 0 C将产生预期的round.w.s,而以1c或2c结尾则不会产生反汇编。
另一个源MIPS绿片提供了相同的答案: 0x0c代表圆形,0x3c表示比较,而0x1c和0x2c显示为未赋值。
我们希望处理器对未分配的操作码做些什么?它不清楚,而且通常没有详细说明。它需要工作来检测这些东西,这样设计人员就可以允许实现做最方便(即最低的硬件工作量). ,因此,未指定的操作可以是省略,甚至可能被明确定义为未定义的行为!执行的可能性很大,从导致某种异常/错误(未实现),到不正确地解码指令,这可能意味着运行非常类似的编码指令。
https://stackoverflow.com/questions/74354445
复制相似问题