ldr指令小记

一、ldr的两个两个作用

1、装载指令:将某个地址中的值赋到某个寄存器中

2、伪指令:将某个地址赋予寄存器

二、分类说明

1、装载指令



此段代码实现中断程序的跳转

①ldr pc, _undifined_instruction ;将_undifined_instruction 地址中的数据赋予pc,实现指令跳转

_undifined_instruction: .word _undifined_instruction

undifined_instruction:

nop

②ldr r0, 0x12345678; 将地址为0x12345678中的数据赋予r0



2、伪指令


①ldr r0, =undifined_instruction ;功能类似于上面举例

②ldr r0, =0x12345678;把0x12345678写到r0中

当作为伪指令时,ldr实现的功能与mov有些相似,但又有些区别

区别一、mov只能传递0x00~0xff和由这些数进行移位所得的数

时间: 2024-11-07 07:13:42

ldr指令小记的相关文章

ARM汇编中LDR伪指令和LDR指令

ARM汇编语言是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/s tr 指令. 比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如: ldr r0, 0x12345678 就是把 0x12345678这个地址中的值存放到r0中 . 而mov不能实现这个功能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中, 这个和x86这种CISC 架构 的芯片区别最大的地方.x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中

ARM汇编中ldr伪指令和ldr指令(转载)

转自:http://blog.csdn.net/ce123_zhouwei/article/details/7182756 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令.比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如: ldr r0, 0x12345678 就是把0x12345678这个地址中的值存放到r0中.而mov不能实现这个功 能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯

uboot之ldr指令

刚开始接触uboot的时候,就一直对ldr指令很迷惑,因为这个指令有两层用法,一个是加载,一个是伪指令.今天闲着没事就来说一下这两个之间的区别. LDR伪指令的形式是"LDR Rn,=expr". LDR加载指令形式是"LDR Rn,COUNT" 其实也简单区分,"LDR Rn,=expr"是指把expr这个符号所在的地址赋值给Rn,"LDR Rn,COUNT"是指把地址为COUNT里面的内容赋值给Rn. 举个例子: COUN

Python-调用系统指令小记

1 import subprocess 2 def exec_command(cmd, log_path, **kwargs): 3 with open(log_path, 'w') as f: 4 p = subprocess.Popen(cmd, 5 shell=True, 6 stdout=f.fileno(), 7 stderr=f.fileno(), 8 executable='/bin/bash', 9 **kwargs) 10 p.communicate() #立即阻塞父进程,直到

npm常用指令小记

查看本地指定包在npm远程服务器的版本信息 方式一: npm view <packageName> versions 方式二: npm info <packageName> 查看本地指定包版本(需先进入package.json所在文件夹) npm ls <packageName> 查看本地全局安装包版本 npm ls <packageName> -g 更新指定包版本 npm update <packageName> npm update <

LDR、STR指令

LDR(load register)指令将内存内容加载入通用寄存器 STR(store register)指令将寄存器内容存入内存空间中 #define GPJ0CON 0xE0200240 _start: ldr r0, =0x11111111  // 将立即数/非法立即数,赋值给r0 ldr r1, =GPJ0CON // 将GPJ0CON的地址赋给r1 str r0, [r1] // 寄存器间接寻址.把r0中的数写入到r1中的数为地址的内存中去 ldr r0,[r1] //将r1的值赋给r

ARM汇编- LDR加载指令,LDR伪指令

1,ldr加载指令LDR指令的格式为:LDR{条件}  目的寄存器,<存储器地址>LDR指令用亍从存储器中将一个32位的字数据传送到目的寄存器中.该指令通常用亍从存储器中读取32位的字数据到通用寄存器,然后对数据迕行处理.当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转.该指令在程序设计中比较常用,丏寻址方式灵活多样,请读者认真掌握.指令示例: LDR R0,[R1]                                     

ARM7ldr指令与ldr伪指令

ldr伪指令的第二个操作数之前有个=,意思是第一个操作书 = 第二个操作数,相当明了 核心就在于对于用.word指令在.text段里另外定义一段内存,用ldr r0,[pc + x(可以算出.text段里的内存地址)]这种基于PC的偏移量方式加载内存里的内容到寄存器 看下源代码和反汇编的结果就清楚了 伪指令用于大的常数: 源代码: 1 top: 2 ldr r0,=12345678 3 add r1,r2,r3 4 eor r1,r2,r3 5 eor r1,r2,r3 6 bottom: 7

ARM中LDR伪指令与LDR加载指令

ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令. LDR伪指令的形式是“LDR Rn,=expr”.下面举一个例子来说明它的用法. COUNT EQU       0x40003100 …… LDR       R1,=COUNT MOV      R0,#0 STR       R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法. LDR       R1,=COUNT是将C