ARM汇编中str的说明

Buydadip

奇怪的是,我找不到关于str汇编语言工作方式的解释

我了解以下...

str r1,[r2]

......将存储无论是在寄存器1 r1,寄存器2的地址r2但是,我想解释一下str方括号复杂得多时的工作方式。例如:

str r1,[r0,r3,lsl#2]

这里发生了什么?我想知道r1最终的价值,以及它的价值是什么。我无法对其进行测试,因此我将对我的想法进行猜测。

r3在逻辑上移位2。然后将其添加到中r0最后,r1被添加到中r0

这是我的猜测,尽管即使对我来说,这听起来也不正确。有人可以帮我澄清一下吗?

code_dredd

str r1,[r0,r3,lsl#2]

这里发生了什么?

上面的指令基本上说:r0 + (r3 << 2) = r1,或者如果我们手动“扩展”位移:r0 + (r3 * 4) = r1

记号是<instruction> <src> [<dst>, <offset>, <shift>]

请注意,偏移量也可以为负数(例如-r3, #lsl2)。

我想知道r1的值将在哪里结束,其值将是多少。

你需要知道的实际值r0,并r3在执行过程中在特定时间点之前就可以知道这些。这就像问“ yin的值是y = f(x) : x * 2什么?” 一无所知x

r3在逻辑上移位2。然后将其添加到r0。

是的。

最后,将r1添加到r0。

在基准r1存储在(不添加到)由左手侧计算出的位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章