ARM MOV指令对立即数的要求
生活随笔
收集整理的這篇文章主要介紹了
ARM MOV指令对立即数的要求
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MOV R1,#9
以上指令表示把9傳送到寄存器R1中。
需要注意的是,這里的立即數是有要求的,不是說任何一個立即數都可以。
要求是:立即數可以由一個8位的常數循環右移偶數位得到。其中循環右移的位數由一個4位二進制的兩倍表示。
如果立即數記作immediate,8位常數記作immed_8,4位的循環右移值記作rotate_imm,則
immediate=immed_8循環右移(2*rotate_imm)
這樣并不是每一個32位的常數都是合法的立即數,只有能通過上面的構造方法得到的才是合法的立即數。
比如,0x101,0x102,0xFFF;
另外,一個合法的立即數,可能有多種編碼方法。如0x3F0,它可以采用下面兩種編碼方法:
immed_8=0x3F,rotate_imm=0xE
(0x3F循環右移28位,即0x3F左移4位得到0x3F0)
或者
immed_8=0xFC,rotate_imm=0xF
(0xFC循環右移30位,即0xFC左移2位得到0x3F0)
對于不合法的立即數,比如要把0xFFF傳送到R1中,雖然不能用MOV指令,但是可以用LDR偽指令,用法是
LDR R1,=0xFFF
總結
以上是生活随笔為你收集整理的ARM MOV指令对立即数的要求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不可变对象
- 下一篇: 面对offer,如何选择