[理工] 計組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