Q
如何位移位立即值
0
A
回答
1
讓有關使用滾筒式移位器編碼的立即成機器代碼彙編擔心。
正如邁克爾說,裝配支持組裝時間常數的表達式,所以你應該能夠編寫
MOV R0, #(N >> 1)
只要在可以使用即時位數量有限編碼值結果並旋轉計數。
如果你不知道它會永遠組裝,並確定與留的選擇到組裝,使用僞指令獲取一個常到寄存器以任何方式最有效:
ldr r0, =(N >> 1) @ I think I have the right syntax here
這會組裝成mov-immediate或來自附近常數的PC相對負載,或者可能是另一種選擇。
如果你關心哪個編碼用於mov r0, #value
(如0x4 ROR 2
與0x1 ROR 0
),然後使用:
mov r0, #0x4, #2 @ rotates to the right by 2.
不像mov
帶寄存器操作數,mov
-immediate不提供LSL,LSR,ROL,ROR等桶形移位器選擇。它總是向右旋轉,並且計數必須是對於ARM編碼。
IIRC,Thumb允許任何計數,但是立即數比較少。
查看ARMv7 reference manual瞭解更多信息。
+1
明確的即時編碼的語法是'#imm8,#rot',例如。 'mov r0,#4,#2'代表一個非標準的'mov r0,#1'(旋轉是在右邊,而不是在左邊)。 – Notlikethat
相關問題
- 1. x86_64 64位立即移動
- 2. 尋找對於非即時移位值的sse 128位移位操作
- 3. 無法在彙編器中移動64位立即數
- 4. XA彙編:16位立即數
- 5. 獲得位置立即在Android的
- 6. 立即刪除位置更新
- 7. 激活GPS後立即獲取位置
- 8. 立即獲取用戶位置信息
- 9. 具有64位立即數值的長模式(64位)相對調用
- 10. 如何移位std_logic_vector?
- 11. 移位錯誤值
- 12. 如何在C++中移位整數值
- 13. 如何讓CLLLocationManager立即返回一個位置?
- 14. 如何使用GPS立即閱讀位置
- 15. 如何從C中的32位序列的立即部分獲取值?
- 16. 立即在排序位置中放置一個值
- 17. 移位N位
- 18. 移位位java
- 19. 位列移位
- 20. 位移位
- 21. 位移位
- 22. C位移位奇數結果過去15位移位左移
- 23. 移動立方體,按位and和or
- 24. 如何立即停止服務立即
- 25. 在Prolog中將立方體從位置A移動到位置
- 26. 位位移在Java
- 27. 如何處理移位DateTime
- 28. 如何解釋此位移?
- 29. 移位值在一列中
- 30. BIT移位HEx值telnet
你爲什麼要這麼做? –
我想在R0中的N/2的值 – DBLouis
那麼就使用一個立即值即N/2! –