作者doubleday (......)
看板Grad-ProbAsk
标题Re: [理工] [计组]-mips 组语
时间Thu Jan 7 13:02:13 2010
※ 引述《NOtWorThy ()》之铭言:
: 假设 $t1:0x1000 0000
: $t2:0x1000 0100 假设位址0x1000 0100存0xFFFF FFFF
: a) b)
: lb $t0, 0($t1) lb $t0, 0($t1)
: sw $t0, 0($t2) sb $t0, 0($t2)
: 1)假设位址0x1000 0000存12 34 56 78
: 问执行完少面两道指令後$t2值是多少?
: ans: a) 0x0000 0012 //why not 0x0000 0078 ?
: b) 0x12FF FFFF //why not 0xFFFF FF78 ?
: 烦请高手赐教
: 感激不尽~!
我的想法
a.
位址t1:0x1000 0000存12 34 56 78
t1位址 0 1 2 3
内容 12 34 56 78
lb 之後 t0 = 12
由於sw指令是储存一个字组所以要补0(载入是byte储存是word)
b.
位址t2:0x1000 0100存FF FF FF FF
t2位址 0 1 2 3
内容 FF FF FF FF
lb 之後 t0 = 12
因为sb指令是储存一个byte,所以直接写入即可(载入是byte储存也是byte)
有错请指教:)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.40.115.180
1F:→ NOtWorThy:感激 了解了 所以这跟ENDIAN也有关罗 ?! 01/07 14:04
2F:推 hayouj2000:不太懂~为什麽第一题不是0012FFFF 01/08 00:32
3F:→ hayouj2000:可以再说的更详细一点吗 01/08 00:32
回NOtWorThy
我是照着写组语的观念去解,倒是没考虑跟ENDIAN有没有关
补充a小题
lb 之後 t0 = 12 (t0存的是byte格式)
sw是储存一个word指令
因此需要将t0先扩展成word,再存入t2的位址
4个byte = 1个word
byte: 12
word: 00 00 00 00 12
写入t2
前: t2位址 0 1 2 3
内容 FF FF FF FF
後: t2位址 0 1 2 3
内容 00 00 00 12
若结果为 00 12 FF FF(只有写入2byte=半word),则不符合sw指令
以上有错请指教:)
※ 编辑: doubleday 来自: 114.40.119.163 (01/08 10:42)