|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 cjsb37 于 2013-4-29 09:29 编辑
在运行C程序之前,必须创建C运行环境。这个任务由C引导程序使用名为c_int0的函数来执行。运行时支持源库(rts.lib)在名为boot.asm的模块中包含了这个程序的源程序。
在系统开始运行时,c_into函数可以被转移或者被调用,但是它通常由硬件复位来调用。必须将c_into函数与其他的目标模块链接起来。当使用-c或者-cr连接器选项并且包含rts2xx.lib作为连接器输入文件之一时,以上调用将自动实现。
当链接C程序时,连接器可以将可执行输出模块中入口点的值赋给_C_INT0。然而在复位时这并不会自动设置硬件到指向c_int0的向量。
c_int0函数执行如下初始化C环境的任务:
(1)为系统堆栈定义一个名位.stack的段,并设置初始化堆栈指针;
(2)初始化全局变量,通常将.cinit段中的初始化表中的数据复制到为.bss段中的变量分配的存储区来实现.如果在加载时为初始化变量(-cr选项),则加载器在程序运行之前执行该步骤;
(3)调用函数main运行C程序.
|
|