GAS

来自osdev
跳到导航 跳到搜索

This article is a stub! 此页面或段落为 草稿。 你可以通过更精确的编辑贡献 来帮助本wiki。

GNU Assembler

Website:http://www.gnu.org/software/binutils/

GNU 汇编器(简称GAS,可执行文件名也是'gas')是binutils包的一部分。 GCC 生成 汇编 源代码,并自动调用GAS,该GAS将代码汇编为 目标文件 中的机器代码。 GCC允许开发人员使用内联汇编功能将汇编直接转发给汇编程序。

GAS不是 '一个' 单独的汇编程序,而是汇编程序的集合- GCC支持的每个平台各有一个。 它们在可用选项、宏语言等方面非常相似。 GAS提供了一个非常可靠且支持良好的汇编程序,它与其他GNU工具完全集成(隐式的make规则,来自C/C++源代码的内联汇编,可以被gcc-o myfile.o myfile.s调用,所有工具都使用相同的汇编语法)。

用法

AT&T语法

AT&T汇编语法对于在 x86x86-64 平台上的类Unix操作系统是较为传统的语法。 这种语法让人想起了原始Unix操作系统中使用的原始汇编程序格式。 指令的操作数顺序是源,然后是目标。 汇编语言明确寄存器必须以%字符作为前缀,常量必须以$字符作为前缀。

Intel语法支持

直到v2.10的binutils中,GAS只支持x86x86-64的AT&T语法,这与几乎所有其他汇编程序使用的Intel语法有很大不同。 如今,GAS同时支持语法集 (.intel_syntax 和默认的 .att_syntax),甚至允许禁用其他强制性的操作数前缀 “%” 或 “$” (..._ syntax noprefix)。 这里一些陷阱 - 几个FP操作码遭受反向操作数排序的困扰,由于兼容性的原因,该操作数排序必然会停留在那里, .intel_syntax选项有时会生成优化程度较低的操作码 (尝试moving到%si...)。

通常不鼓励使用对Intel语法的支持,因为它可能与其他汇编器中真正使用的Intel语法存在较为诡异地不同。 如果需要Intel语法,则应考虑不同的汇编程序

另见

文章

外部链接