每个汇编文件(.S文件开头),都有这三行,在这里解释一下:
.text定义一个代码段,处理器开始执行代码的地方,代表后面是代码,这是GCC必须的;
.global关键字用来让一个符号对链接器可见,可以供其他链接对象模块使用;告诉编译器后续跟的是一个全局可见的名字【可能是变量,也可以是函数名】
.global_start和_start:配合,给代码开始地址定义个全局标记_start
_start是一个函数的起始地址,也是编译、链接后程序的起始地址。由于程序是通过加载器来加载的,必须要找到 _start名字的函数,因此_start必须定义成全局的,以便存在于编译后的全局符合表中,供其它程序【如加载器】寻找到。
linux寻找这个 _start 标签作为程序的默认进入点。