[問題] 一個MIPS指令的問題

看板ASM (組合語言)作者 (Aesthetic)時間15年前 (2011/04/05 13:51), 編輯推噓4(408)
留言12則, 3人參與, 最新討論串1/1
有個陣列的起始位址是 十進位的 4000000 換成二進位是 0000 0000 0011 1101 0000 1001 0000 0000 指令說要把這個載入 用了下列兩個指令 lui t1 0000 0000 0011 1101 ori t1 t1 0000 1001 0000 0000 我看不懂第二個為什麼是用ori欸 上來問一下 看有沒有高手解答一下 謝謝囉 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.141.170.12

04/05 14:20, , 1F
lui 載入 Address的上半部, 從31bit 到 16 bit。
04/05 14:20, 1F

04/05 14:20, , 2F
ori 載入 Address的下半部, 從15 bit 到 0 bit。
04/05 14:20, 2F

04/05 14:23, , 3F
如此一來,暫存器t1 才擁有完整的 32-bit address.
04/05 14:23, 3F

04/05 14:23, , 4F
可以參考白算盤(Computer Org. and Design )的課本。
04/05 14:23, 4F

04/05 14:25, , 5F
我的是英文版 3ed, 在p.96 有類似的課本例子。
04/05 14:25, 5F

04/11 16:34, , 6F
作ori這個動作等同於 load lower immediate
04/11 16:34, 6F

04/18 22:32, , 7F
lui 就是load upper immediate
04/18 22:32, 7F

04/18 22:32, , 8F
ori 就是or immediate
04/18 22:32, 8F

04/18 22:38, , 9F
先做lui後,32bit數的前16bit都會是0,此時再or 一個只
04/18 22:38, 9F

04/18 22:38, , 10F
有前16bit有值的數字(任意數字or 0還是任意數字),就
04/18 22:38, 10F

04/18 22:38, , 11F
可完成32bit的數字組合
04/18 22:38, 11F

04/18 22:38, , 12F
雖然已經經過11年了 ^U^
04/18 22:38, 12F
文章代碼(AID): #1Dcgt5N7 (ASM)
文章代碼(AID): #1Dcgt5N7 (ASM)