高分悬赏:有关ARM汇编的一点疑问。下面的代码是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高分悬赏:有关ARM汇编的一点疑问。下面的代码是啥意思?相关的知识,希望对你有一定的参考价值。
loop
ORR r3,r2,r1,LSL#20 ; Build pattern into empty register
STR r3,[r0,r1,LSL#2] ; Use loop counter to create individual table base addresses
SUBS r1,r1,#1 ; Decrement loop counter
BPL loop ; Loop until r1 goes negative
其次,还要看每条指令的操作数。
最后,再联系上下文,看整段指令是在做什么。
首先,
loop是一个标号,用来标志指令中的某个位置。
ORR是“或”指令,后面的LSL是逻辑左移;
STR是存储指令;
SUBS是影响标志位的减法;
BPL是跳转指令,其中PL代表正号+,BPL也就是当结果为正时,跳转。
其次,
ORR r3,r2,r1,LSL#20
是先将r1寄存器的值逻辑左移20位,和r2做或操作,将结果放到r3中,即r3=r2 | (r1<<20)
STR r3,[r0,r1,LSL#2]
是先将r1寄存器的值左移2位,然后与r1相加,得到一个地址addr,然后将r3的内容保存到addr所指定的内存地址。
SUBS r1,r1,#1
是将r1减1操作,由于SUB后面有个S,该指令将根据结果设置标志位。
BPL loop
上面已经说过,当标志位为+,也就是前一条指令r1=r1-1的结果不是负数的话,那么就跳到loop,继续循环。
最后,
我们来分析一下整段代码是在做什么:
在这里面,
r1寄存器用来计数,
r2 参考技术A loop
ORR r3,r2,r1,LSL#20 ; r1左移20位后与r2做或运算,运算结果放r3
STR r3,[r0,r1,LSL#2] ; r1左移2位与r0相加,相加的结果放r0.然后以r0的值为地址,把r3存储在这个地址里
SUBS r1,r1,#1 ; r1=r1-1,并影响CPSR寄存器中的标志位
BPL loop ; r1不为负则继续循环追问
那个[ ]中括号表示什么?
追答从内存里取数
如何关闭w7系统下的21和3306端口,高分悬赏,求详细过程,拒绝复制粘贴,不要xp操作方法。
我装的是W7系统,按照百度搜索得到的答案,却没有发现W7服务项File Transfer Protocol,文件传输协议。
请高人指点,我很菜,请详细填写过程。谢谢!
建完入站规则后再按照上述步骤设置出站规则。
tcp和udp都要禁的话就在重复一次步骤。
以上是关于高分悬赏:有关ARM汇编的一点疑问。下面的代码是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章