看板 Grad-ProbAsk 關於我們 聯絡資訊
想請問一下b的欄位要怎麼看 以第一個為例,載入1個byte時00010010是+18 所以之後左邊要補零$t0 ->0x00000012 寫入1個byte時把最右邊的1byte(12)存入$t2,所以變成0xFFFFFF12 不知道哪個部分理解錯了 謝謝 https://i.imgur.com/shly5Dt.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.125.222.162 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1571469190.A.4EA.html
tayashot: http://imgur.com/gallery/VMkooSk load byte時會從記 10/19 18:55
tayashot: 憶體位址低的載入$t0暫存器最右邊,所以store byte把$t 10/19 18:55
tayashot: 0暫存器存入記憶體時也要從記憶體低的位址開始存,你會 10/19 18:55
tayashot: 寫這樣是因為從高的記憶體位址開始存,把記憶體位址畫 10/19 18:55
tayashot: 出來就比較好懂了° 10/19 18:55
tayashot: 可以把它想成是little endian的存取方式 10/19 19:05
tayashot: 如果圖片看不清楚我可在傳一張清楚一點的 10/19 19:24
mi981027: 與其說sb從低位開始存,不如說 0x1000 0010本來就是指某 10/19 20:20
mi981027: 一個"byte"的位置了 10/19 20:20
mi981027: 如果今天指定0x1000 0011那就會存到他的下一個byte 10/19 20:20
mi981027: 另外 MSB從低位記憶體開始存本身就是big endian 10/19 20:20
mi981027: 不能想成little endian 加上MIPS也是big endian 10/19 20:20
tayashot: http://imgur.com/gallery/JHxy61Smi大說的沒錯 我是想 10/19 21:19
tayashot: 說用little endian會不會比較好記 都是從最右邊載入記 10/19 21:19
tayashot: 憶體 10/19 21:19
mi981027: 哦哦哦懂t大的意思了 是指sb把LSB (12)存到低位記憶體 10/19 21:40
mi981027: 的情況像是little endian的存法嗎 10/19 21:40
mi981027: 不過我傾向於認為sb是把多於1 byte的所有bit忽略就是了 10/19 21:40
mi981027: 怕會有混淆哈哈 10/19 21:40
yoz4ni: 存到$t0之後要store byte不是要從記憶體低的位址開始嗎 10/19 22:21
yoz4ni: 那$t0 -> 0x00000012 最低位置不是x之後的2個00嗎 10/19 22:23
yoz4ni: 高低位置判斷有點搞不清楚OAO 10/19 22:25
mi981027: 不是欸 是12,你把t0存的數值跟他該放到的地址搞混了 10/19 23:59
mi981027: 這裡t0裡的0x0000 0012是一個數值,他該存到0x0000 0000 10/19 23:59
mi981027: 這個地址 10/19 23:59
mi981027: https://i.imgur.com/bmapqn9.jpg 10/20 00:00
mi981027: 討論數值的順序時講的是MSB, LSB 討論記憶體位置時才會 10/20 00:04
mi981027: 講高低位 10/20 00:04
tayashot: mi大的圖解超清楚\⊙▽⊙/~ 10/20 06:32
yoz4ni: 所以從記憶體load時是從記憶體低位置載入,存到t0時是變 10/20 15:22
yoz4ni: 數值,那如果是lh的話,t0會長怎樣啊,是0x00001234囉? 10/20 15:25
mi981027: 沒錯 10/20 16:11
yoz4ni: 清楚了 感謝回答(,,・ω・,,) 10/20 22:18