我在zlg的实验板上看到这样的startup.s文件,就其中的一段代码有点不能理解,希望高手解答,这个文件和什么的开发板其实没有关系,主要就是和相关的分散加载机制有关!
程序代码如下,文件startup.s
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
!!!!!问题一!!!!! 其他的内容还是可以理解,但是这里一段实在是看不懂阿 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
这一段是不是在给ZI段的内容清0?
就上面的这两个问题
|