精华内容
下载资源
问答
  • arm ldr 指令

    2019-09-24 09:58:38
    ldr 指令格式:(读取概念) ldr{条件} 1目的寄存器,2存储器地址 eg: ldr r0,[r1]; 把r1中数据值读取到r0中; ldr r0,[r1,r2];把r1+r2的数值 读取到r0中; ldr r0,[r1,#1024]把 r1+1024的数值读取到r0中; LDR ...

    ldr 指令格式:(读取概念)

    ldr{条件} 1目的寄存器,2存储器地址

    eg:

    ldr r0,[r1]; 把r1中数据值读取到r0中;

    ldr r0,[r1,r2];把r1+r2的数值 读取到r0中;

    ldr r0,[r1,#1024]把 r1+1024的数值读取到r0中;

    LDR R0,[R1,R2]!;将存储器地址为R1+R2的字数据读入寄存器R0,幵将新地址R1+R2写入R1。
    LDR R0,[R1,#8]!  ;将存储器地址为R1+8的字数据读入寄存器R0,幵将新地址R1+8写入R1。 
    LDR R0,[R1],R2  ;将存储器地址为R1的字数据读入寄存器R0,幵将新地址R1+R2写入R1。
    LDR R0,[R1,R2,LSL#2]!  ;将存储器地址为R1+R2×4的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。
    LDR R0,[R1],R2,LSL#2  ;将存储器地址为R1的字数据读入寄存器R0,幵将新地址R1+R2×4写入R1。”

     

     

     

    参考地址:http://blog.chinaunix.net/uid-28458801-id-4084264.html

    转载于:https://www.cnblogs.com/ltlly/p/4105676.html

    展开全文
  • ARM ldr指令

    2019-09-28 16:57:26
    ldr r3, [r0], #4的操作过程如下 r3 = *(r0); r0 += 4; DG 标签: ARMLDR 转载于:https://www.cnblogs.com/hyd10000/archive/2010/05/20/1740428.html

    ldr r3, [r0], #4的操作过程如下

    r3 = *(r0);
    r0 += 4;

    DG 标签: ARMLDR

    转载于:https://www.cnblogs.com/hyd10000/archive/2010/05/20/1740428.html

    展开全文
  • ARM指令集中,LDR通常都是作加载指令,但是它也可以作伪指令。 初学者一般不会注意到它们的区别,其实在嵌入式开发过程中,这两条指令时非常常用的!我们应该了解他们的区别。LDR指令的形式是“LDR Rn,=expr”。...

    ARM指令集中,LDR通常都是作加载指令,但是它也可以作伪指令。
    初学者一般不会注意到它们的区别,其实在嵌入式开发过程中,这两条指令时非常常用的!我们应该了解他们的区别。

    LDR伪指令的形式是“LDR Rn,=expr”。作用是装在一个32bit常数和一个地址到寄存器。
    下面举一个例子来说明它的用法。

    COUNT EQU       0x56000054
    LDR       R1,=COUNT
    MOV       R0,#0
    STR       R0,[R1]

    COUNT是我们定义的一个变量,地址为0x56000054。

    LDR       R1,=COUNT  是将COUNT这个变量的地址,也就是0x56000054放到R1中。
    MOV      R0,#0是将立即数0放到R0中。

    STR   R0,[R1]  是一个典型的存储指令,将R0中的值放到以R1中的值为地址的存储单元去。
    实际就是将0放到地址为0x56000054的存储单元中去。
    可见这三条指令是为了完成对变量COUNT赋值。

    再举一个例子
    LDR       R1,=COUNT   ;将COUNT的值赋给R0
    LDR       R0,[R1]   ;这条伪指令,是将COUNT的地址赋给R1
     
    ARM是RISC结构,数据从内存到CPU之间的移动只能通过LDR/STR指令来完成。
    比如想把数据从内存中某处读取到寄存器中,只能使用ldr
    比如:
    ldr r0, 0x12345678 ;就是把0x12345678这个地址中的值存放到r0中。

    而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。
    x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。
    MOV是从一个寄存器或者移位的寄存器或者立即数的值传递到另外一个寄存器。
    从本质上是寄存器到寄存器的传递,为什么会有立即数,其实也是有限制的立即数,不是所有立即数都可以传递的
    这个立即数要符合一个8位数循环右移偶数位的取值。
    原因是,MOV本身就是一条32bit指令,除了指令码本身,它不可能再带一个可以表示32bit的数字,所以用了其中的12bit来表示立即数,其中4bit表示移位的位数(循环右移,且数值x2),8bit用来表示要移位的一个基数。

    另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。ldr伪指令可以在立即数前加上=,以表示把一个地址写到某寄存器中,比如:
    ldr r0, =0x12345678
    这 样,就把0x12345678这个地址写到r0中了。所以,ldr伪指令和mov是比较相似的。只不过mov指令限制了立即数的长度为8位,也就是不能超 过512。而ldr伪指令没有这个限制。如果使用ldr伪指令时,后面跟的立即数没有超过8位,那么在实际汇编的时候该ldr伪指令是被转换为 mov指令的。

    展开全文
  • ARM汇编中LDR伪指令和LDR指令

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

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

               ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:

    ldr r0, 0x12345678

    就是把0x12345678这个地址中的值存放到r0中。而mov不能实现这个功能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。


                 另外还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。ldr伪指令可以在立即数前加上=,以表示把一个值(一般是一个地址)写到某寄存器中,比如:
    ldr r0, =0x12345678

    这样,就把0x12345678这个值写到r0中了。所以,ldr伪指令和mov是比较相似的。只不过mov指令限制了立即数的长度为8位,也就是不能超过512。而ldr伪指令没有这个限制。如果使用ldr伪指令时,后面跟的立即数没有超过8位,那么在实际汇编的时候该ldr伪指令是被转换为mov指令的。
               
             
            其实ldr指令可以装载一个32bit立即数的说法并不确切,因为实际上并不是这一条语句装载了一个32bit立即数,真正的汇编代码是将某个地址的值传递给r1,就是说需要一个地址存放0x12345678这个立即数。而且如果这个立即数可以用mov指令的形式来表达,会被编译器实际用mov来代替比如:
    ldr r1,=0x10
    会变成
    mov r1,#0x10 

            综述所述:ldr伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编编译源程序时,ldr伪指令被编译器替换成一条合适的指令。若加载的常数未超出mov或mvn的范围,则使用mov或mvn指令代替该ldr伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的ldr指令从文字池读出常量。
            ldr伪指令和ldr指令不是一个同东西。
               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • ARM LDR汇编指令

    千次阅读 2014-06-27 11:23:03
    ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。 (1) LDR r0,=name,像这种带等号的是伪指令,而不是ARM指令,LDR指令用于加载立即数或一个地址值到指定寄存器. *如果name是立即数的话:LDR R0...
  • arm指令--ldr指令

    2020-01-19 17:45:25
    ldr指令 ldr作为指令、伪指令在arm汇编中。 ldr指令格式: LDR{条件} 目的寄存器,<存储器地址> LDR R0,[R1] ;将存储器地址为R1的字数据读入寄存器R0。 LDR R0,[R1,R2] ;将存储器地址为R1+R2的字数据...
  • ARM指令集 LDR指令

    千次阅读 2013-10-05 20:19:09
    ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。 (1)LDR r0,=name,像这种带等号的是伪指令,而不是ARM指令,LDR指令用于加载立即数或一个地址值到指定寄存器. *如果name是立即数的话:LDR R0,=0X...
  • LDR指令的形式是“LDR Rn,=expr”,例: COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100。这种定义方法在汇编语言中是很常见的。 LDR R1...
  • ARM LDR指令辨析

    2013-06-27 15:04:29
    ARM LDR指令的格式: 1 LDR Rn, =expr 如果name是立即数的话 LDR R0,=0X123;//将0X123存入R0 如果name时个标识符 LDR R0,=NAME;//将NAME的地址存入R0 1 LDR R0, =...
  • ARM LDR指令用法

    千次阅读 2018-03-22 12:25:18
    LDR指令 10.45 LDR pseudo-instruction &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 功能:把一个32位立即数或一个32位的内存地址加载到一个寄存器中。 ...
  • ARMLDR指令LDR加载指令 ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令LDR指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT ...
  • ARM LDR指令用法详解

    千次阅读 2014-06-09 09:31:42
    LDR伪指令 10.45 LDR pseudo-instruction  功能:把一个32位立即数或一个32位的内存地址加载到一个寄存器中。... 注意:这里描述的是LDR伪指令,而不是LDR指令  语法:   LDR{cond}{.W} Rt, =e
  • ARM ldr与adr指令对比

    2016-11-28 20:49:47
    adr指令与ldr指令,都是加载,而他们的区别在于:  adr指令加载符号时加载运行地址(相对位置),编译器编译后改成add指令或sub指令  ldr指令加载符号时加载链接地址(绝对位置),编译器编译后仍是ldr指令(原来的...
  • LDR伪指令 10.45 LDR pseudo-instruction 功能:把一个32位马上数或一个32位的内存地址载入到一个寄存器中。... 注意:这里描写叙述的是LDR伪指令,而不是LDR指令 语法: LDR{cond}{.W} Rt...
  • ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如: ldr r0, 0x12345678  就是把0x12345678这个地址中的值存放...
  • ARM汇编-LDR指令学习

    2015-04-26 15:08:39
    LDR指令用亍从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用亍从存储器中读取32位的字数据到通用寄存器, 然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作...
  • ARM汇编语言中有ldr指令和ldr、adr伪指令,他们都可以将标号表达式作为操作数。区别如下: ldr指令和adr、ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值;adr、ldr伪指令用于获取标号的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 962
精华内容 384
关键字:

armldr指令