|Image$$RO$$Limit|相关问题

本文解析了2200实验教程中3.8实验的一段初始化C程序运行环境的ARM汇编代码,详细解释了|Image$$RO$$Limit|等符号的意义及作用,并介绍了如何进行段拷贝以及C程序变量与ARM寄存器之间的关联。
摘要由CSDN通过智能技术生成

Q

|Image$$RO$$Limit|相关问题

在2200实验教程中3.8实验中有这样一段初始化C程序的运行环境的代码,如下:
; 起动文件。初始化C程序的运行环境,然后进入C程序代码。

          IMPORT    |Image$$RO$$Limit|  
          IMPORT    |Image$$RW$$Base|   
          IMPORT    |Image$$ZI$$Base|   
        IMPORT    |Image$$ZI$$Limit|  

        IMPORT    Main        ; 声明C程序中的Main()函数

        AREA    Start,CODE,READONLY    ; 声明代码段Start
        ENTRY                ; 标识程序入口
        CODE32                ; 声明32位ARM指令    
            
Reset    LDR        SP,=0x40003F00

        ; 初始化C程序的运行环境
        LDR          R0,=|Image$$RO$$Limit|
        LDR        R1,=|Image$$RW$$Base|    
        LDR        R3,=|Image$$ZI$$Base|    
            
        CMP          R0,R1
        BEQ        LOOP1
LOOP0    CMP        R1,R3      
        LDRCC   R2,[R0],#4     
        STRCC   R2,[R1],#4
        BCC        LOOP0
        
LOOP1    LDR        R1,=|Image$$ZI$$Limit|
        MOV        R2,#0
LOOP2    CMP        R3,R1
        STRCC   R2,[R3],#4
        BCC        LOOP2
        
        B        Main        ; 跳转到C程序代码Main()函数
        
        END
想知道如下几个问题:
1、|Image$$RO$$Limit| 是在哪儿定义的,有何作用?
2、      LDR        R0,=|Image$$RO$$Limit|
        LDR        R1,=|Image$$RW$$Base|    
        LDR        R3,=|Image$$ZI$$Base|
     这三条语句的作用是什么?
3、如何将C程序中的变量i、sum与ARM寄存器中的R0、R1关联起来?
请周工帮忙解释一下,或提示在哪儿可以找到对这些的解释,谢谢! 

 

 

A:

1、|Image$$RO$$Limit|是编译器内部产生的变量,也就是只读属性的程序段的最后一个字句的地址,请参考ADS的PDF文档

2、      LDR        R0,=|Image$$RO$$Limit|
        LDR        R1,=|Image$$RW$$Base|    
        LDR        R3,=|Image$$ZI$$Base|
     这三条语句的作用是什么?
这一段是实现段拷贝功能,一般的段拷贝过程是把RO段中的有初值的变量还原到RW段中,然后清零RW段中剩下的无初值的变量

3、如何将C程序中的变量i、sum与ARM寄存器中的R0、R1关联起来?
请周工帮忙解释一下,或提示在哪儿可以找到对这些的解释,谢谢!
i,sum等等函数内部定义的局部变量,在编译的时候一般是定义成寄存器变量(callee save的寄存器:r4到r11),如果不够用就用拼命用stack来补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值