.globl _start
:
-
汇编中以
.
开头的名称并不是指令的助记符,而是汇编指示 / 伪操作
,不是真正的指令。 -
.globl
是一个关键字,让一个符号对链接器可见,可被其它链接对象模块使用。
在.globl _start
中,.globl
告诉汇编器,_start
这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号。
如果一个符号没有用.globl
声明,就表示这个符号不会被链接器用到。 -
_start
是一个符号,是汇编程序的默认入口标号。符号在汇编中代表一个地址。汇编程序中的符号经过汇编器的处理之后,所有的符号被替换成它所代表的地址值。(汇编器在翻译汇编程序时会计算每个数据对象和每条指令的地址,当看到一个符号定义时,就把它后面一条指令的地址作为这个符号所代表的地址。而_start
这个符号又比较特殊,它所代表的地址是整个程序的入口地址) -
c 语言中我们可以通过变量名来访问一个变量,就是读写某个地址的内存单元;我们通过函数名调用一个函数,其实就是跳转到该函数第一条指令所在的地址,所以 c 语言中的变量名和函数名都是符号,本质上是代表内存地址的。