我在zlg的实验板上看到这样的startup.s文件,就其中的一段代码有点不能理解,希望高手解答,这个文件和什么的开发板其实没有关系,主要就是和相关的分散加载机制有关!<br /><br />程序代码如下,文件startup.s<br /><br /> IMPORT |Image $$ RO $$ Limit|<br /> IMPORT |Image $$ RW $$ Base|<br /> IMPORT |Image $$ ZI $$ Base|<br /> IMPORT |Image $$ ZI $$ Limit|<br /> <br /> IMPORT Main ;声明C程序中的Main()函数,<br /> <br /> AREA START,CODE,READONLY ;声明代码段START<br /> ENTRY ;标识程序入口<br /> CODE32 ;声明32位ARM指令<br />RESET LDR SP,=0x40003F00 ;初始化C程序的运行环境<br /> LDR R0,=|Image $$ RO $$ Limit|<br /> LDR R1,=|Image $$ RW $$ Base|<br /> LDR R3,=|Image $$ ZI $$ Base|<br /> <br /> CMP R0,R1<br /> BEQ LOOP1<br />LOOP0 CMP R1,R3<br /> LDRCC R2,[R0],#4<br /> STRCC R2,[R1],#4<br /> BCC LOOP0<br /> <br />LOOP1 LDR R1,=|Image $$ ZI $$ Limit|<br /> MOV R2,#0<br />LOOP2 CMP R3,R1<br /> STRCC R2,[R3],#4<br /> BCC LOOP2<br /> <br /> B Main ;跳转到C程序代码Main()函数<br /> <br /> END<br /><br /><br />!!!!!问题一!!!!!<br />其他的内容还是可以理解,但是这里一段实在是看不懂阿<br /> CMP R0,R1<br /> BEQ LOOP1<br />LOOP0 CMP R1,R3<br /> LDRCC R2,[R0],#4<br /> STRCC R2,[R1],#4<br /> BCC LOOP0<br /><br />这段程序在干什么?有什么意义?请解释一下!!谢谢<br /><br />!!!!!问题二!!!!!<br />还有就是<br />LOOP1 LDR R1,=|Image $$ ZI $$ Limit|<br /> MOV R2,#0<br />LOOP2 CMP R3,R1<br /> STRCC R2,[R3],#4<br /> BCC LOOP2<br /><br />这一段是不是在给ZI段的内容清0?<br /><br />就上面的这两个问题<br /> |
|