问题,就是上边的,ldr与伪汇编的区别难道只是一个=么? ADR与ADRL的区别是什么呢? 当然,首先请帮我解释一下这两个指令是做什么用的,最好详细点! 因为是初学者,天天有问题,抱歉啊。多帮帮忙啦!!! :em18: :em18: :em18:
ldr Rd address 加载到寄存器中,
std Rd address 存储到存储器中。
从字面意思来记住这两个指令。
想起存储,我们首先想到的是存到硬盘上,
所以std 从寄存器存储到存储器(硬盘)上。这样ldr也就记住了。
ldr R4, [r8],#4 //r8所存地址中的数加载到寄存器r4中,然后r8中所存地址加4
相当与 a=*p;p+=4;
ldr的确是个复杂的指令,现总结一下: 首先要判断我们用的是ldr arm指令还是伪指令。 当我们用的是arm指令时,它的作用不是向寄存器里加载立即数,而是将某个地址里的内容加载到寄存器。而伪指令ldr的作用就是向寄存器里加载立即数。 (1) ldr伪指令 ldr伪指令的格式是 ldr Rn, =expr 其中,expr是要加载到Rn中的内容,一般可以是立即数或者label。 如果expr可以用8bit数据向右移偶数位得到,那么这条伪指...
ldr 1. ldr{COND}{|B}T Rd, 加载指定地址上的数据(字或字节),放入Rd中 2. ldr{COND} Rd,=expr/label_expr ldr伪指令加载32位的立即数或地址值到指定寄存器 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23070/showart_160065.html
Description: arm平台下使用bl和ldr跳转应当注意的地方(arm-linux-gcc环境) arm平台下使用bl和ldr跳转应当注意的地方(arm-linux-gcc环境) 作者 : MSN: 一,按lds文件连接的不同模块,不能用bl实现跳转 一个错误的例子: 1.crt0.s @****************************************************************************** @ File:crt0.s @ 功能:通过它转入C程序 @***********************************************...
ARM汇编中ldr伪指令和ldr指令 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如: view plaincopy to clipboard[code]01.ldr r0, 0x12345678 [/code]就是把0x12345678这个地址中的值存放到r0中。而mov不能实现这个功能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯...
ldr r0, _start adr r0, _start ldr r0, =_start nop mov pc, lr _start: nop 编译的时候设置 RO 为 0x0c008000 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 0c008000 : c008000: e59f000c ldr r0, [pc, #12] ; c008014 c008004: e28f0008 add r0, pc, #8 ; 0x8 c008008: ...
关于ldr和adr的理解 |
|