[英]Break down of lui MIPS
我想弄清楚ori t1,100000
在 MIPS 中是如何分解的。 MIPS 說它變成 .
lui $1,1
ori $1,$1,34464
or $9,$9,$1
我不確定它是如何得到lui
的值 1 和ori
的值 34464 的。
如果你用任何計算器將 100000 轉換為十六進制,你會得到
100000=0x186a0
它的大小優於 16 位,在 MIPS 中,立即數不能大於 16 位。 我們不能在一條指令中輸入這個值。
看看不同的上部和下部。
0x186a0=0x10000+0x86a0
= (0x1<<16)+0x86a0
和
0x86a0=34464
現在我們擁有編寫代碼所需的一切。
# store 0x10000==1<<16 in an intermediate register with lui (load upper immediate)
# MIPS asm uses $1 (or $at) as intermediate register
lui $1,1
# content of $1 is 0x00010000
ori $1,$1,34464
# nor we can OR this register with t1 (also called $9)
or $9,$9,$1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.