fbpx
维基百科

GNU汇编器

GNU汇编器(英語:GNU assembler),是由GNU计划所使用的汇编器,一般称为gas,或依其可执行文件名称简称为as。它是GCC的默认后端。它用于汇编GNU操作系统Linux内核以及其他各种软件。它是GNU Binutils包的一部分。

GNU汇编器
開發者GNU计划
目前版本
  • toolset version of binutils[1]
编程语言C
系統平台跨平台
类型汇编器
许可协议GNU通用公共许可证 v3
网站www.gnu.org/software/binutils/

GAS的可执行文件被命名为asUnix汇编器的标准名称。GAS是跨平台的,可以运行或为不同的计算机系统结构编译。GAS依据GNU通用公共许可证第三版发布,为自由软件

通用语法

GAS支持适用于所有支持架构的通用语法。通用语法包括汇编指令和注释方法。

指令

GAS使用汇编器指令(也被称为伪操作),它们作为关键字指示开始一个时期,与C语言中的预处理指令表现相同。虽然无论目标架构如何,大多数可用的汇编指令都是有效的,但一些指令仍然因机器不同而不同。[2]

注释

GAS支持两种注释风格:[3]

多行注释:

C语言类似,以一对斜线-星号对开始和结束:

/* 注释 */ 

单行注释:

在不同的架构中汇编时,单行注释有几种不同的格式。

  • #用于以下平台中:i386,x86-64,i960,68HC11,68HC12,VAX, V850,m32r,M880x0。
  • ;用于以下平台中:AMD 29k family,ARC,H8/300 family,HPPA,PDP-11,picoJava,Motorola,PowerPC。
  • @用于ARM平台。
  • |用于680x0平台。
  • !用于Renesas SH平台。

用法

作为流行编译器套件GCC的后端,GNU汇编器在编译现代开源软件中有非常广泛的应用。在Linux系统上,GAS经常用作与其他GNU软件结合的汇编器。因为OS X,修改后版本的GAS也可以在麦金塔操作系统的开发工具包中找到。

示例程序

一个标准的“Hello, world!”程序,运行于Linux IA-32

.globl _start .text _start:  movl $len, %edx  movl $msg, %ecx  movl $1, %ebx  movl $4, %eax  int $0x80  movl $0, %ebx  movl $1, %eax  int $0x80 .data msg:  .ascii "Hello, world!\n"  len = . - msg 

批评

那些更习惯于Intel语法的人认为,比起其他汇编器,在x86x86-64平台上不支持使用Intel语法就是一大败笔。

然而,自从2.10版本,Intel语法可以通过使用.intel_syntax指令使用。[4][5][6]

参见

参考文献

  1. ^ https://sourceware.org/git/?p=binutils-gdb.git;a=tree; 检索日期: 2021年2月8日.
  2. ^ The GNU Assembler - Assembler Directives. [2013-10-08]. (原始内容于2012-02-22). 
  3. ^ Red Hat Inc. Using as. [1012-03-11]. (原始内容于2011-06-20). 
  4. ^ GNU Assembler News. [永久失效連結]
  5. ^ AT&T Syntax versus Intel Syntax. Using as, the GNU Assembler. [2013-10-08]. (原始内容于2010-05-29). 
  6. ^ Ram Narayan. Linux assemblers: A comparison of GAS and NASM. IBM DeveloperWorks. 2007-10-17 [2007-10-17]. (原始内容于2009-03-03). 

外部链接

gnu汇编器, 英語, assembler, 是由gnu计划所使用的汇编器, 一般称为gas, 或依其可执行文件名称简称为as, 它是gcc的默认后端, 它用于汇编gnu操作系统, linux内核以及其他各种软件, 它是gnu, binutils包的一部分, 開發者gnu计划目前版本toolset, version, binutils, 编程语言c系統平台跨平台类型汇编器许可协议gnu通用公共许可证, v3网站www, software, binutils, gas的可执行文件被命名为as, unix汇编器的标准名. GNU汇编器 英語 GNU assembler 是由GNU计划所使用的汇编器 一般称为gas 或依其可执行文件名称简称为as 它是GCC的默认后端 它用于汇编GNU操作系统 Linux内核以及其他各种软件 它是GNU Binutils包的一部分 GNU汇编器開發者GNU计划目前版本toolset version of binutils 1 编程语言C系統平台跨平台类型汇编器许可协议GNU通用公共许可证 v3网站www wbr gnu wbr org wbr software wbr binutils wbr GAS的可执行文件被命名为as Unix汇编器的标准名称 GAS是跨平台的 可以运行或为不同的计算机系统结构编译 GAS依据GNU通用公共许可证第三版发布 为自由软件 目录 1 通用语法 1 1 指令 1 2 注释 2 用法 3 示例程序 4 批评 5 参见 6 参考文献 7 外部链接通用语法 编辑GAS支持适用于所有支持架构的通用语法 通用语法包括汇编指令和注释方法 指令 编辑 GAS使用汇编器指令 也被称为伪操作 它们作为关键字指示开始一个时期 与C语言中的预处理指令表现相同 虽然无论目标架构如何 大多数可用的汇编指令都是有效的 但一些指令仍然因机器不同而不同 2 注释 编辑 GAS支持两种注释风格 3 多行注释 与C语言类似 以一对斜线 星号对开始和结束 注释 单行注释 在不同的架构中汇编时 单行注释有几种不同的格式 用于以下平台中 i386 x86 64 i960 68HC11 68HC12 VAX V850 m32r M880x0 用于以下平台中 AMD 29k family ARC H8 300 family HPPA PDP 11 picoJava Motorola PowerPC 用于ARM平台 用于680x0平台 用于Renesas SH平台 用法 编辑作为流行编译器套件GCC的后端 GNU汇编器在编译现代开源软件中有非常广泛的应用 在Linux系统上 GAS经常用作与其他GNU软件结合的汇编器 因为OS X 修改后版本的GAS也可以在麦金塔操作系统的开发工具包中找到 示例程序 编辑一个标准的 Hello world 程序 运行于Linux IA 32 globl start text start movl len edx movl msg ecx movl 1 ebx movl 4 eax int 0x80 movl 0 ebx movl 1 eax int 0x80 data msg ascii Hello world n len msg批评 编辑那些更习惯于Intel语法的人认为 比起其他汇编器 在x86和x86 64平台上不支持使用Intel语法就是一大败笔 然而 自从2 10版本 Intel语法可以通过使用 intel syntax指令使用 4 5 6 参见 编辑 自由软件主题 GNU toolchain 二进制文件描述库 汇编器列表参考文献 编辑 https sourceware org git p binutils gdb git a tree 检索日期 2021年2月8日 The GNU Assembler Assembler Directives 2013 10 08 原始内容存档于2012 02 22 Red Hat Inc Using as 1012 03 11 原始内容存档于2011 06 20 请检查 access date 中的日期值 帮助 GNU Assembler News 永久失效連結 AT amp T Syntax versus Intel Syntax Using as the GNU Assembler 2013 10 08 原始内容存档于2010 05 29 Ram Narayan Linux assemblers A comparison of GAS and NASM IBM DeveloperWorks 2007 10 17 2007 10 17 原始内容存档于2009 03 03 外部链接 编辑維基教科書中的相關電子教程 en X86 Assembly GAS Syntax官方网站 Gas手册 页面存档备份 存于互联网档案馆 A comparison of GAS and NASM 页面存档备份 存于互联网档案馆 位于IBM as the portable GNU assembler 参考 单一UNIX 规范第7期 由國際開放標準組織发布 取自 https zh wikipedia org w index php title GNU汇编器 amp oldid 67213715, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。