|
楼主 |
发表于 2011-1-13 09:10:57
|
显示全部楼层
非常感谢国旭的答复!!! 我说的这个Startup.S 就只是搬运的任务,我贴在下面,请你看看。我的问题是:汇编语言程序也应该存在运行域和加载域的问题,那么它的搬运工作是由谁完成的?难道汇编语言程序只要用ADS1.2中的ARM Linker 指定一下RO_Base RW_Base,就可以完成加载域和运行域的搬运工作了?这个工作是由编译器完成的还是ADS1.2工程模板完成的? 望指点为盼!!!再次谢谢啦!
; 起动文件。初始化C程序的运行环境,然后进入C程序代码。(C Main就不贴了)
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 |
|