“GAS”的版本间差异

来自osdev
跳到导航 跳到搜索
(创建页面,内容为“{{Stub}} {{Infobox_Tool |name=GNU Assembler |website=http://www.gnu.org/software/binutils/ }} “'''GNU 汇编器'''(简称'''GAS''',可执行文件名也是'gas')是binutils包的一部分。 GCC 生成 汇编 源代码,并自动调用GAS,该GAS将代码汇编为 目标文件 中的机器代码。 GCC允许开发人员使用内联汇编功能将汇编直接转发给汇编程序。 GAS不是 '一个' 单独的汇…”)
 
 
(未显示同一用户的1个中间版本)
第4行: 第4行:
|website=http://www.gnu.org/software/binutils/
|website=http://www.gnu.org/software/binutils/
}}
}}
'''GNU 汇编器'''(简称'''GAS''',可执行文件名也是'gas')是[[binutils]]包的一部分。 [[GCC]] 生成 [[Assembly|汇编]] 源代码,并自动调用GAS,该GAS将代码汇编为 [[Object Files|目标文件]] 中的机器代码。 GCC允许开发人员使用内联汇编功能将汇编直接转发给汇编程序。
'''GNU 汇编器'''(简称'''GAS''',可执行文件名也是'gas')是[[binutils]]包的一部分。 [[GCC]] 生成 [[Assembly|汇编]] 源代码,并自动调用GAS,该GAS将代码汇编为 [[Object Files|目标文件]] 中的机器代码。 GCC允许开发人员使用内联汇编功能将汇编直接转发给汇编程序。


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


= = 用法 = =
== 用法 ==


==AT&T语法===
=== AT&T语法===


AT&T汇编语法对于在 [[x86]] 和 [[x86-64]] 平台上的类Unix操作系统是较为传统的语法。 这种语法让人想起了原始Unix操作系统中使用的原始汇编程序格式。 指令的操作数顺序是源,然后是目标。 汇编语言明确寄存器必须以<tt>%</tt>字符作为前缀,常量必须以<tt>$</tt>字符作为前缀。
AT&T汇编语法对于在 [[x86]] 和 [[x86-64]] 平台上的类Unix操作系统是较为传统的语法。 这种语法让人想起了原始Unix操作系统中使用的原始汇编程序格式。 指令的操作数顺序是源,然后是目标。 汇编语言明确寄存器必须以<tt>%</tt>字符作为前缀,常量必须以<tt>$</tt>字符作为前缀。
第18行: 第18行:
直到v2.10的binutils中,GAS只支持[[x86]]和[[x86-64]]的AT&T语法,这与几乎所有其他汇编程序使用的Intel语法有很大不同。 如今,GAS同时支持语法集 (<tt>.intel_syntax</tt> 和默认的 <tt>.att_syntax</tt>),甚至允许禁用其他强制性的操作数前缀 “%” 或 “$” (<tt>..._ syntax noprefix</tt>)。 这里''有''一些陷阱 - 几个FP操作码遭受反向操作数排序的困扰,由于兼容性的原因,该操作数排序必然会停留在那里, <tt>.intel_syntax</tt>选项有时会生成优化程度较低的操作码 (尝试<tt>mov</tt>ing到%si...)。
直到v2.10的binutils中,GAS只支持[[x86]]和[[x86-64]]的AT&T语法,这与几乎所有其他汇编程序使用的Intel语法有很大不同。 如今,GAS同时支持语法集 (<tt>.intel_syntax</tt> 和默认的 <tt>.att_syntax</tt>),甚至允许禁用其他强制性的操作数前缀 “%” 或 “$” (<tt>..._ syntax noprefix</tt>)。 这里''有''一些陷阱 - 几个FP操作码遭受反向操作数排序的困扰,由于兼容性的原因,该操作数排序必然会停留在那里, <tt>.intel_syntax</tt>选项有时会生成优化程度较低的操作码 (尝试<tt>mov</tt>ing到%si...)。


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


= = 另见 = =
== 另见 ==


==文章===
=== 文章===
* [[Assembly|汇编]]
* [[Assembly|汇编]]
*[[Tool Comparison|工具比较]]
*[[Tool Comparison|工具比较]]

2022年2月11日 (五) 03:05的最新版本

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语法,则应考虑不同的汇编程序

另见

文章

外部链接