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. 激活GPS后立即获取位置
- 5. 立即获取用户位置信息
- 6. 获得位置立即在Android的
- 7. 具有64位立即数值的长模式(64位)相对调用
- 8. 立即在排序位置中放置一个值
- 9. 位移位
- 10. 移位N位
- 11. 位列移位
- 12. 移动立方体,按位and和or
- 13. 如何立即停止服务立即
- 14. 位位移在Java
- 15. 移位值在一列中
- 16. 移位矩阵中的值
- 17. 行移位矢量值
- 18. BIT移位HEx值telnet
- 19. 在MATLAB移位索引值
- 20. 如何解释此位移?
- 21. 如何处理移位DateTime
- 22. 如何在VB.NET中移位Ushort 16位整数中的位?
- 23. 位位移功能,在HSV图像移位位
- 24. 鼠标移出后立即提示定位和隐藏工具提示
- 25. 的UIView动画动画,而是立即移回原来的位置
- 26. Vim,如何立即移动光标并同时移动
- 27. 左移,然后立即右移在ASM?
- 28. 左移位并丢弃位
- 29. 6502汇编移位位
- 30. C中的逐位移位
你为什么要这么做? –
我想在R0中的N/2的值 – DBLouis
那么就使用一个立即值即N/2! –