我从考试中了解以下代码:
.data
msg1: .asciiz "0x616263"
msg2: .word 0x636261
#msg2: .byte 0x61,0x62,0x63
.text
main:
li $v0, 4
la $a0, msg1
syscall
li $v0, 4
la $a0, msg2
syscall
exit:
li $v0, 10
syscall
根据考试的进程者使用Little Endian方法。
根据考试,此代码的输出是:
abc616263
我在MARS 4.4模拟器上的输出是0x616263abc。
感谢您的帮助。
答案 0 :(得分:0)
没有。谁告诉你输出应该是abc616263
是错误的。代码首先清楚地打印字符串"0x616263"
,因此0x616263abc
是预期的输出。
在小端系统上,32位字0x636261
与四个字节0x61, 0x62, 0x63, 0x00
相同(0x00
就在那里因为一个字是四个字节,0x636261
的最高有效字节为0)。如果我们将其视为ASCII,则'a', 'b', 'c', NUL
等于以NUL结尾的字符串"abc"
。