1. 取低8位,先用0扩展为32位数
2. 将所得32位数循环右移 2*Rotate位,Rotate为[11:8]
来分析一句:mov r2, #300。反汇编如下:
8004: e3a02f4b mov r2, #300 ; 0x12c
立即数是直接放在指令内部的。
1. 取其低8位:0x4b
2. 扩展为32位:0x0000 004b
3.
4.
对于0x53000000的计算方法也是相同的。 mov r1, #0x53000000 这样写确实是可行的。
MOV R1,#0x00004000 反汇编得 4:
e3a01901 mov r1, #16384 ; 0x4000
LDR
R0,=0x56000000 反汇编得0: e3a00456 mov r0, #1442840576 ; 0x56000000
有兴趣可以验证以上两个例子
本文详细解析了汇编指令MOVR和MOV的执行过程,包括立即数的取低8位、扩展为32位以及循环右移的操作。通过具体实例,如movr2,#300和movr1,#0x53000000,展示了指令的执行细节。同时,还探讨了类似操作movr1,#0x00004000和LDR R0,=0x56000000的实现方法。
1584

被折叠的 条评论
为什么被折叠?



