ATT格式汇编程序的基本框架

AT&T格式的汇编代码(特定于gas汇编器)包含3个最常使用的段,每个段都有不同的功能:
The data section
The bss section
The text section
text section必须包含在所有汇编程序中,它是保存指令的地方。data section和bss section是可选择的。data section中声明
有初始值的数据元素,这些数据元素在汇编程序中被用作变量。bss section中的数据元素被初始化为0或null,这些数据元素
经常被用于缓冲区。
定义段:
gas中用.section定义段,这条命令(不同于操作码助记符)只有一个参数即段的类型:
.section .data是声明data section
.section .bss declares bss section
.section .text declares text section
上面段的声明顺序也是 一个汇编程序的常见结构。注意bss段一定要在text 段之前,而data段可以在text段之后但那样是不标准的。
定义起始点:
当一个汇编语言被转换为一个可执行文件时linker必须知道你的指令码的开始点(尤其是对于有多个函数遍布整个源代码的复杂程序)
为了解决这个问题,GNU汇编器声明了一个用来指明应用程序起点的默认的标签_start,_start标签表明程序从哪开始运行,如果linker
找不到这个标签,它会在终端上显示错误信息。实际上当linker找不到_start时它会默认一个地址作为程序的开始点,但这无法保证就是
程序真正的入口。
另外,如果你想让一个函数能被外部程序访问,需要用.globl命令声明该函数的标签。

猜你喜欢

转载自blog.csdn.net/hui_chen123/article/details/89785330