2619|3

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有段ARM汇编代码不理解,请高手指点. [复制链接]

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

在开发板上写C代码时,要先ARM汇编程序初始化,然后才可以执行C代码.
可是我对初始化代码不是很理解,请高手详细解释一下.
上面只是其中的一部分.下面是完整的.
IMPORT      |Image$$RO$$Limit|
             IMPORT      |Image$$RW$$Base|
             IMPORT      |Image$$ZI$$Base|
             IMPORT      |Image$$ZI$$Limit|
            
            
             IMPORT      main
            
             AREA        Start,CODE,READONLY
             ENTRY
             CODE32
            
Reset        LDR         SP,=0x40003F00
             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
            
             END
此帖出自ARM技术论坛

最新回复

不明LZ在说什么  详情 回复 发表于 2008-5-1 06:43
点赞 关注
 

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个是把flash里的程序搬到内存里,初始化ZI段内存为0,
IMPORT             ?Image$$RO$$Limit ?
                          IMPORT             ?Image$$RW$$Base ?
                          IMPORT             ?Image$$ZI$$Base ?
                          IMPORT             ?Image$$ZI$$Limit ?

取得便宜器编译后各段的开始地址,大小

CMP                   R0,R1
                          BEQ                   LOOP1  //如果2个地址一样,跳过copy
  
LOOP0                 CMP                   R1,R3
                          LDRCC               R2,[R0],#4
                          STRCC               R2,[R1],#4
                          BCC                   LOOP0 //开始把RO段的程序,搬到RW段


LOOP1                 LDR                   R1,=   ?Image$$ZI$$Limit ?
                          MOV                   R2,#0
                          
LOOP2                 CMP                   R3,R1
                          STRCC               R2,[R3],#4
                          
                          BCC                   LOOP2   //清0
  B                       main //跳转到main函数


祝 你好运





此帖出自ARM技术论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我也想了解,谢谢LZ.
此帖出自ARM技术论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
不明LZ在说什么
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表