我有以下两个问题:
1)如果在MIPS64汇编程序中使用MIPS32指令会发生什么? MIPS64汇编程序是否会组装混合程序?
2)MIPS64汇编程序可以组装MIPS32汇编程序吗?如果是这样,它是否会正确运行,即产生与具有MIPS32架构的机器相同的输出?
非常感谢!
答案 0 :(得分:1)
64位MIPS处理器具有64位寄存器,但它仍然执行以32位指令字编码的指令。例如,add $t0,$t1,$t2
在32位处理器中添加32位寄存器,但相同的指令添加了64位寄存器,在64位处理器中产生64位结果。通过符号扩展支持,为MIPS32编译的程序应在MIPS64 CPU上正确运行。
这与使用完全不同的指令编码的Intel x86和x64架构完全不同。为x64编译的程序在x86处理器上根本不会运行。
答案 1 :(得分:0)
mips32指令可以在Mips64汇编程序中使用,就好了。
事实上,对Mips64的改变使得旧的mips32程序无需以向上兼容的方式解决任何问题。
如果您的代码使用了正确的助记符,例如: 添加x,x,y为32位添加 dadd x,x,y为64bit add ori x,0xf00为32位OR-immed dori x,0xf00为64位OR-immed
然后汇编程序将自动生成正确的目标代码,即使在同一程序中使用也是如此。 Mips64将适应两者,并获得正确的结果。 Mips32(具体)汇编程序会抱怨。
如上所述,第二个问题的答案是肯定的。
Paxym