[理工] 计组p28

楼主: yoz4ni (yoooooz)   2019-10-19 15:13:08
想请问一下b的字段要怎么看
以第一个为例,加载1个byte时00010010是+18 所以之后左边要补零$t0 ->0x00000012
写入1个byte时把最右边的1byte(12)存入$t2,所以变成0xFFFFFF12
不知道哪个部分理解错了
谢谢
https://i.imgur.com/shly5Dt.jpg
作者: tayashot (Taya)   2019-10-19 18:55:00
http://imgur.com/gallery/VMkooSk load byte时会从内存位址低的加载$t0暂存器最右边,所以store byte把$t0暂存器存入内存时也要从内存低的位址开始存,你会写这样是因为从高的内存位址开始存,把内存位址画出来就比较好懂了°可以把它想成是little endian的存取方式如果图片看不清楚我可在传一张清楚一点的
作者: mi981027 (呱呱竹)   2019-10-19 20:20:00
与其说sb从低位开始存,不如说 0x1000 0010本来就是指某一个"byte"的位置了如果今天指定0x1000 0011那就会存到他的下一个byte另外 MSB从低位内存开始存本身就是big endian不能想成little endian 加上MIPS也是big endian
作者: tayashot (Taya)   2019-10-19 21:19:00
http://imgur.com/gallery/JHxy61Smi大说的没错 我是想说用little endian会不会比较好记 都是从最右边加载内存
作者: mi981027 (呱呱竹)   2019-10-19 21:40:00
哦哦哦懂t大的意思了 是指sb把LSB (12)存到低位内存的情况像是little endian的存法吗不过我倾向于认为sb是把多于1 byte的所有bit忽略就是了怕会有混淆哈哈
楼主: yoz4ni (yoooooz)   2019-10-19 22:21:00
存到$t0之后要store byte不是要从内存低的位址开始吗那$t0 -> 0x00000012 最低位置不是x之后的2个00吗高低位置判断有点搞不清楚OAO
作者: mi981027 (呱呱竹)   2019-10-19 23:59:00
不是欸 是12,你把t0存的数值跟他该放到的地址搞混了这里t0里的0x0000 0012是一个数值,他该存到0x0000 0000这个地址https://i.imgur.com/bmapqn9.jpg讨论数值的顺序时讲的是MSB, LSB 讨论内存位置时才会讲高低位
作者: tayashot (Taya)   2019-10-20 06:32:00
mi大的图解超清楚\⊙▽⊙/~
楼主: yoz4ni (yoooooz)   2019-10-20 15:22:00
所以从内存load时是从内存低位置加载,存到t0时是变量值,那如果是lh的话,t0会长怎样啊,是0x00001234囉?
作者: mi981027 (呱呱竹)   2019-10-20 16:11:00
没错
楼主: yoz4ni (yoooooz)   2019-10-20 22:18:00
清楚了 感谢回答(,,・ω・,,)

Links booklink

Contact Us: admin [ a t ] ucptt.com