【MIPS】内存小端存储与MARS显示

1.小端存储方式:按字节逆序

以4Byte一个字为单位,其内按字节逆序排列

概念上-数据真值
机器码-内存存储
Mars显示
(+0)
(+1)
(+2)
(+3)
0x12345678
0x78
0x56
0x34
0x12
0x12345678
0111_1000 0101_0110 0011_0100 0001_0010
"Hell"
'H'
0x48
'e'
0x65
'l'
0x6c
'l'
0x6c
"lleH"
0x6c6c6548

通过lb指令验证

MARS中内存显示:
image

通过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)

产生的结果:
image

$t50xffffffff是lb指令特性:取出1Byte后将进行符号扩展至32位才能存入寄存器中

2.MARS显示:默认小端存储

MARS读取顺序

字符串与数字对比验证

如下声明:

.data
num: .word 0x12345678
msg: .asciiz "Hellow world"

查看内存(HEX显示)
image
查看内存(ASCII显示)
image

可见内存数据段中,0x12345678顺字节显示,而"Hell"逆字节显示

注意:逆序vs逆字节:

其他例证

.data 0x00001000
num: .byte 1,2,3,4,5,6,7,8

.text
li $a0, 0x00001000
lw $t0, 0($a0)

image

.byte指令:顺序将内容写入内存数据段,小端读取便是按字逆字节读取

posted @ 2021-10-06 22:57  Xlucidator  阅读(506)  评论(0编辑  收藏  举报