• arm汇编:ldr,str,ldm,stm,伪指令ldr


    ldr,str,ldm,stm的命名规律:

    这几个指令命名看起来不易记住,现在找找规律。

    指令 样本 效果 归纳名称解释
    ldr Rd,addressing ldr r1,[r0] addressing to Rd [mem to reg] load to register
    str Rd,addressing str r1,[r0] Rd ro addressing [reg to mem] store register
    ldm Rn,reglist ldmfd sp!,{r0-r7,pc} *sp to reglist[mem to reg] load to reglist
    stm Rn,reglist stmfd sp!,{r0-r7,lr} reglist to *sp[reg to mem] store reglist

    因此ldr,str,ldm,stm的命名均是以reg寄存器为主体,ld表示load装载寄存器,st表示store保存寄存器。

    装载的源头、保存的去处就是内存了。

    ldr同时还是伪指令,这时必然形为:  ldr reg, =expr 。expr可以是一个32位立即数,也可以是一个标号。

    ldr意为大范围地址读取指令,并且读的是基于pc的相对偏移的地址值。

    adr为小范围地址读取伪指令,将基于PC相对偏移的地址值读取到寄存器中。adr register,exper

    可用于进行程序跳转,也可用于在数据池中查找数据。

    adr r0,DispTab   ;加载转换表地址到r0。
    ; DispTab编译后是一个固定的地址,这个地址后的空间存放了N个单位的数据。程序运行起来后的地址和编译地址或有不同。这个指令加载的是运行时的地址。
    ldrb r1,[r0,r2]  ;以r2的值为偏移量,读取转化表中的数据到r1中。
    
    ....
    
    DispTab   
      DCB 0xc0,0xf9,0xa4,0xb0

    adlr为中范围地址读取伪指令,比adr可读取的地址范围更大。

    ;=================
    ; Memory control
    ;=================
    BWSCON      EQU  0x48000000     ;Bus width & wait status
    BANKCON0    EQU  0x48000004     ;Boot ROM control
    BANKCON1    EQU  0x48000008     ;BANK1 control
    BANKCON2    EQU  0x4800000c     ;BANK2 control
    BANKCON3    EQU  0x48000010     ;BANK3 control
    BANKCON4    EQU  0x48000014     ;BANK4 control
    BANKCON5    EQU  0x48000018     ;BANK5 control
    BANKCON6    EQU  0x4800001c     ;BANK6 control
    BANKCON7    EQU  0x48000020     ;BANK7 control
    REFRESH     EQU  0x48000024     ;DRAM/SDRAM refresh
    BANKSIZE    EQU  0x48000028     ;Flexible Bank Size
    MRSRB6      EQU  0x4800002c     ;Mode register set for SDRAM Bank6
    MRSRB7      EQU  0x48000030     ;Mode register set for SDRAM Bank7
    ;要设置的mem控制寄存器,共13个。 ;*******************************************
    ; ;in init.s

      .
      .
      .
    SetMemController
      adrl    r0, SMRDATA    
        ldr    r1,=BWSCON    ;BWSCON Address
        add    r2, r0, #52    ;End address of SMRDATA
    
    0
        ldr    r3, [r0], #4    ;unsigned int *pValue = (unsigned int*)SMRDATA ;  r3 = pValue[0] , pValue+=1;
        str    r3, [r1], #4    ;unsigned int *reg_addr = (unsigned int*)BWSCON ;  *reg_addr = r3 ; reg_addr+=1;
        cmp    r2, r0          ;if(pValue != SMRDATA+52) {loop };
        bne    %B0
    ;end of
    SetMemController
      .
      .
      .
    LTORG SMRDATA DATA
    ; Memory configuration should be optimized for best performance ; The following parameter is not optimized. ; Memory access cycle parameter strategy ; 1) The memory settings is safe parameters even at HCLK=75Mhz. ; 2) SDRAM refresh period is for HCLK<=75Mhz. DCD (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28)) DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) ;GCS0 DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) ;GCS1 DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) ;GCS2 DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) ;GCS3 DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) ;GCS4 DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) ;GCS5 DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) ;GCS6 DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) ;GCS7 DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Tsrc<<18)+(Tchr<<16)+REFCNT) DCD 0x32 ;SCLK power saving mode, BANKSIZE 128M/128M DCD 0x20 ;MRSR6 CL=2clk DCD 0x20 ;MRSR7 CL=2clk
    ;mem设置参数值的数据池。共13*4bytes。
    ;*********************************************************

      .
      .
      .
  • 相关阅读:
    HTML5与HTML的区别
    0918练习整理
    0904 未来展望
    ajax弹出窗口
    AjAX请求后台,无刷新更新页面
    Jquery通过Ajax方式来提交Form表单
    php的socket通信
    次短路[SPFA]
    [Usaco2008 Open]Roads Around The Farm分岔路口[水题]
    [Usaco2008 Nov]Guarding the Farm 保卫牧场[DFS]
  • 原文地址:https://www.cnblogs.com/mylinux/p/4180298.html
Copyright © 2020-2023  润新知