2010-04-12 73 views
2

我在MIPS MARS simulator上运行以下代码片段。那个模拟器是小端的。所以,结果如下:MIPS程序集:大,小端混淆

lui $t0,0x1DE    # $t0 = 0x01DE0000 
ori $t0,$t0,0xCADE  # $t0 = 0x01DECADE 
lui $t1,0x1001   # $t1 = 0x10010000 
sw  $t0,200($t1)   # $t1 + 200 bytes = 0x01DECADE 
lw  $t2,200($t1)   # $t2 = 0x01DECADE 

因此,对小端MIPS模拟器的$ T2在程序结束时的值是0x01DECADE。如果这个模拟器是大端的,那么值是多少?它会是0xDECADE01还是仍然是0x01DECADE?

回答

6

它是一样的 - 内存中字节的顺序是不同的,但是你只会看到如果你从200($ t1),201($ t1),202($ t1 )和203($ t1)

+0

谢谢克里斯。这就说得通了。如果有人能够在大型机器上运行SPIM来验证,那将会很好。 – Barney 2010-04-12 19:49:00

+1

@Barney:无需验证。这是标准的字节顺序。商店的行为取决于字节顺序,负载完全与负载相反。一个接一个地执行它们,具有相同的数据大小,不会改变寄存器值。 – Bahbar 2010-04-12 21:04:33

+0

@Bahbar:谢谢。 “负载完全与负载相反。”你的意思是“装载与商店完全相反”吗? – Barney 2010-04-12 23:05:22