linux平台学x86汇编(三):相关开发工具

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】
        类似于其它高级语言,编写汇编语言,必须有一个开发环境,那么也就需要适当的工具了。搭建汇编语言至少应该有下面这些工具:汇编器、链接器、调试器。下下面看看在汇编语言开发环境中如何使用它们。
  • 汇编器
        汇编器用于把汇编语言源代码转换为处理器指令码。选择的汇编器必须能够生成所在系统的处理器系列指令码。汇编语言源代码程序有3个部分:操作码助记符、数据段、命令。但是每种汇编器对于每个部分使用的格式是不同的,所以使用一种汇编器进行程序设计可能和使用另一种汇编器完全不同,汇编器之间最大的区别是汇编命令,一般选择可以简单地为目标环境创建指令码的汇编器。Intel IA-32平台上一些常见的汇编器有MASM、NASM、GAS(GNU汇编器)、HLA。
  • 链接器
        汇编器不像高级语言那样编译、链接一气呵成,需要一个手工操作把汇编目标代码和其它库连接在一起。
  • 调试器
        调试器必须了解硬件平台的指令码集合,并且了解操作系统处理寄存器和内存的方法。

        GNU汇编器时(gas)unix环境下最流行的汇编器,它可以为几种不同硬件平台汇编指令码的能力。本系列文章所有汇编范例都针对gas编写。
        大多数linux发行版已经包含了gas汇编器,其和其它开发软件一起包含在GNU binutils包中。如下为笔者系统相关信息和查找到已安装的binutils包。
</pre><pre name="code" class="plain">$ uname -a
Linux localhost.localdomain 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux
$ rpm -qa | grep binutils
binutils-2.20.51.0.2-5.36.el6.i686
binutils-devel-2.20.51.0.2-5.36.el6.i686
$ 
GUN汇编器时面向命令行的程序,所以运行时应该使用正确的命令行参数。其命令行可执行程序是“as”命令。其用法在命令行上查看其帮助即可。GNU链接器为命令“ld”,用于把目标代码文件链接为可执行文件或者库文件。
把一个汇编语言程序编译链接成可执行文件大致如下:
as -o test.o test.s
ld -o test test.o
        GNU objdump 程序是binutils包中另一个对程序员非常有用的工具。程序员可以使用该命令查看目标文件中由编译器生成的指令码,他不仅能够显示汇编代码,而且能够显示生成的你是指令码。

        在本系列文章中,我们使用linux环境进行开发,所以使用的工具很自然就是使用GNU的工具了,并且其是免费的。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。