【MIPS】内存小端存储与MARS显示
1.小端存储方式:按字节逆序
以4Byte一个字为单位,其内按字节逆序排列
0111_1000 | 0101_0110 | 0011_0100 | 0001_0010 | ||
0x48 |
0x65 |
0x6c |
0x6c |
0x6c6c6548 |
通过lb
指令验证
MARS中内存显示:
通过lb将地址0x00000000
~ 0x00000007
的内容取出存入$t0
~ $t7
li $t8, 0
lb $t0, 0($t8)
lb $t1, 1($t8)
lb $t2, 2($t8)
lb $t3, 3($t8)
lb $t4, 4($t8)
lb $t5, 5($t8)
lb $t6, 6($t8)
lb $t7, 7($t8)
产生的结果:
$t5
的0xffffffff
是lb指令特性:取出1Byte后将进行符号扩展至32位才能存入寄存器中
2.MARS显示:默认小端存储
字符串与数字对比验证
如下声明:
.data
num: .word 0x12345678
msg: .asciiz "Hellow world"
查看内存(HEX显示)
查看内存(ASCII显示)
可见内存数据段中,0x12345678顺字节显示,而"Hell"逆字节显示
其他例证
.data 0x00001000
num: .byte 1,2,3,4,5,6,7,8
.text
li $a0, 0x00001000
lw $t0, 0($a0)
.byte指令:顺序将内容写入内存数据段,小端读取便是按字逆字节读取