.section
指示:把代码划分成若干个段(Section),程序被操作系统加载执行时,每个段被加载到不同的地址,操作系统对不同的页面设置不同的读、写、执行权限。
文本段.text
段保存代码,是只读和可执行的。文本段是内存中存储指令码的区域。同样,这一区域也是固定的,其中只包含汇编语言程序中声明的指令码。
数据段(
保存程序的数据。数据段用于声明为程序存储数据元素的内存区域。在声明数据元素之后,这一段落不能扩展,并且它在整个程序中保持静态。.data
段)
.bss段。bss段也是静态的内存段。它包含用于以后再程序中声明的数据的缓冲区。这一段落的特殊之处是缓冲区是由0填充的。
.global _start
是一个符号,在汇编程序中代表一个地址,可以用在指令中,汇编程序经过汇编器的处理之后,所有的符号都被替换成它所代表的地址值。.globl
指示告诉汇编器,_start
这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号。_start_start
就像C程序的main
函数一样特殊,是整个程序的入口,链接器在链接时会查找目标文件中的_start
符号代表的地址,把它设置为整个程序的入口地址,所以每个汇编程序都要提供一个_start
符号并且用.globl
声明。如果一个符号没有用.globl
声明,就表示这个符号不会被链接器用到。