我用的周立功EasyARM2100开发板附带有工程模板,当新建工程选择LPC2100时会自动生成很多初始化的文件,其中startup.s文件中有这样一段语句:
;The imported labels
;引入的外部标号在这声明
IMPORT FIQ_Exception ;Fast interrupt exceptions handler 快速中断异常处理程序
IMPORT __main ;The entry point to the main function C语言主程序入口
IMPORT TargetResetInit ;initialize the target board 目标板基本初始化
......
BL InitStack ;初始化堆栈 Initialize the stack
BL TargetResetInit ;目标板基本初始化 Initialize the target board
;跳转到c语言入口 Jump to the entry point of C program
B __main
;/*********************************************************************************************************
现在我只要在工程里面写一个包含main()的C程序,就能跳转到这个main函数,但是我搜索了一下,工程的其他地方并没有__main的定义,难道这个__main是一个特殊的标识符?不需要定义就可以跳转到main函数,还是在什么地方声明了?
__mian 是编译器的一个特殊用法,可以认为是一个ADS系统提供的一个系统函数,这个函数中最终会跳转到用户写的 int main(void) 函数里。在__main里头做了一些环境初始化的工作。比如ADS的Ro里写了0x30000000而,代码下载到了0x00000000的位置,因此理论上代码是不能运行,但是通过 b __main好像可以转起来的。它负责代码的