ldr指令(ldr指令和str指令)

ldr指令(ldr指令和str指令)p arm 的 大致的架构 p LDR 条件 目的寄存器 lt 存储器地址 gt 功能 将存储器的一个 32 的数据 保存到寄存器中 但是这条指令还有另外一个作用 如果 目的寄存器是 PC 的话 而从内存中读到的数据是一块内存的地址 那么这个指令实现的功能与 B BL 的作用是一样的 对于这个指令一定要与 C 语言的

大家好,我是讯享网,很高兴认识大家。



 <p>arm  的 大致的架构。</p> 

讯享网


讯享网

LDR{条件} 目的寄存器, &lt;存储器地址&gt;

功能: 将存储器的一个32的数据,保存到寄存器中。

但是这条指令还有另外一个作用。

如果 目的寄存器是PC的话,而从内存中读到的数据是一块内存的地址,那么这个指令实现的功能与B , BL 的作用是一样的。

讯享网

对于这个指令一定要与 C语言的 * 操作符联系起来。

举例:

int * ptr;

x=*ptr++;

翻译成汇编就是

LDR,R0, [R1], #4

首先将以R1为内存地址的值 保存到R0中, 然后在 将R1 的值 加上4 。

所以我最好 将 内存的地址 与内存的值, 单独出来。

然后是 STR 指令

str r0, [r1]    代表的是 , 将R0的内容,写到以R1为地址的内存中。

————————————————————————————————————————

这里最好与C语言的 指针联系起来。

网上的截图:

可以看到对于 num =5,  直接就 将5 ,放到了一块儿内存区域,跟num 这个单词都没关系。

而  ptr=&num ,  这里的 取地址 操作,在cpu 中都没有体现出来,估计这个操作是编译器完成的,cpu  中的没有这样的指令。 并且也 没有 ptr 这个单词什么事情。

也就是说在 cpu 的指令中  只有  mov  [xxx], xxx , 这样的指令,就是将一个数字放到特定的内存地址上, 至于 取地址,应该是编译器的概念。

再来看一个截图:

小讯
上一篇 2025-05-26 18:58
下一篇 2025-05-16 22:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/165194.html