织梦CMS - 轻松建站从此开始!

罗索

Nasm 参考手册(1) (codez 译)

罗索客 发布于 2003-10-09 10:30 点击:次 
Nasm (Netwide Assembler) 是一款以轻便化和模块化为目标,以 80x86 平台为基础的编译器。它支持非常广泛的目标程序格式,其中包括 Linux 和 NetBSD/FreeBSD 操作系统的 a.out,ELF,COFF(ps: 看来 COFF 不是微软自创的?)格式,以及 Microsoft 的 16bit obj 文件和 Win32
TAG:

//============================[转贴请保留该信息]==========================
// Nasm Document
// Version: 0.98.08
//
// Translator : codez
// Finished Date : 2002-11-8
//
// Email: jay_zephyr2002@yahoo.com.cn
// Home :www.xlrj.com/codez
//
// NOTE:
// ps - Translator Comment
//
//============================[转贴请保留该信息]===========================

第一章: 简介

1.1 什么是 Nasm?

Nasm (Netwide Assembler) 是一款以轻便化和模块化为目标,以 80x86 平台为基础的编译器。
它支持非常广泛的目标程序格式,其中包括 Linux 和 NetBSD/FreeBSD 操作系统的 a.out,ELF,
COFF(ps: 看来 COFF 不是微软自创的?)格式,以及 Microsoft 的 16bit obj 文件和 Win32 格式。
当然,他也可以输出无格式的二进制文件(ps: 比如 com 文件啦)。其语法格式设计的通俗易懂,与
Intel 规定的很相似但却没有那么复杂。它与 Pentium, P6, MMX, 3DNow!, SSE 和 SSE2
的语句及其宏兼容。

1.1.1 为什么还需要另外的编译器?

制作 Nasm 的想法源于 comp.lang.asm.x86(或者可能是 alt.lang.asm - 我忘记了), 而根本
原因则是因为在我看来,我们周围并没有一个比较好的免费的 x86 系列的编译器,所以,需要一些
人来写一个。

* a86 是一个好的编译器,但是它并不是免费的,除非你购买它,否则你根本不能得到任何
的 32 bit 兼容代码。只有 dos 的。

* gas 是一个能够用于 Dos 和 Unix 的免费软件,但是它并不是很好,由于作为 gcc 的
后端出现,所以,他认为所有输入的代码都是正确的(ps: feed it correct code).因此,它的错
误检查是最小化的。而且它的语法是非常糟糕的,它几乎把任何人的任何输入都作为正确的结果。另外,
你不能通过它写出合适的 16 bit 的代码。

* as86 是专门为 Minix 和 Linux 定制的,并且(至少是我使用的最后一个版本)很难(或者
根本不能)找到相关的文档。

* Masm 并不是很好,可它却是非常的昂贵,而且它只能产生 dos 下的代码(ps: 应该说是
Microsoft 自己的操作系统的代码).

* Tasm 是一款非常好的编译器,但是它努力与 masm 兼容(ps: 我不觉的这个是缺点,而且
它有自己的特点,并不是十分的兼容,应该说 Tasm 的语法几乎包容了 masm 但是又超越了 masm),
这样,它可以拥有很多的官方文章了。他的语法与拥有矛盾的、怪异的限定权的 masm 相一致(尽管它
选出了一些 Ideal 模式)。另外,它也非常的昂贵,并且只支持 dos(ps: 我想作者用的应该是比较
旧的版本)。

所以,为了能够使你愉快的编程,试试 Nasm. 现在的 Nasm 仍然处于原型模式下 - 我们并不承诺它
会比其它的编译器做得更好。但是,请你,请你一定将错误报告, 修复信息, 有帮助的相关信息以及一
切你能得到的和传递给我们的信息(感谢很多已经这么做了的朋友们!你们知道你们是谁)发送给我们,
我们将改进所有尚未被我们发现的问题。

1.1.2 相关协议

请看附带的 Licence 文件, 你可以在协议允许的条件下,获取 nasm 所发布的相关文档和使用 Nasm.

1.2 联系信息

Nasm 当前版本(V0.98.08)由开发者小组通过 nasm-devel 邮件列表维护(联系方式见下面)。如果你想
报告错误,请先阅读 section 10.2。

Nasm 的主页是 http://www.web-sites.co.uk/nasm, 或者使用另外一个带有附加信息的站点
http://nasm.2y.net/

原创作者的邮箱: jules@dsf.org.uk 或者 anakin@pobox.com. 后一个已经不再属于开发者小组。

Nasm 的最新上传发布的官方站点:
http://www.web-sites.co.uk/nasm
ftp.kernel.org
ibiblio.org

相关公告发布于:
comp.lang.asm.x86
alt.lang.asm
comp.os.linux.announce

如果你需要 nasm beta 版本的发放信息,以及当前的开发情况,请加入 nasm-devel 邮件列表。
你可以到以下网址注册:
http://groups.yahoo.com/group/nasm-devel
http://www.pairlist.net/mailman/listinfo/nasm-devel
http://sourceforge.net/projects/nasm

首选列表为 sourceforge.net ,它是 nasm 最新的源码提交和发行的主页(但是现在好像连不上去)。
其它的开放邮件列表可能不会长期支持。

1.3 安装

1.3.1 在 MS-Dos 或者 Windows 下安装 nasm

当你获取了 Dos 版本的 nasm 的压缩文档 nasmXXX.zip(XXX 表示压缩包中的 nasm 版本),将它
释放到 nasm 目录(eg. C:\\Nasm)

压缩包中包含四个可执行文件: Nasm.exe, nasmw.exe, ndisasm.exe 和 ndisamw.exe. 其中文
件名以 w 结尾的可执行文件表示 win32 可执行文件,用来运行于 win95 or winnt Intel 平台,
另外一个是 16bit 的 dos 可执行文件。

nasm 是一个单独的可执行文件,所以你可以拷贝(至少一个) nasm.exe 和 nasmw.exe 到你的 PATH
所指向的目录下,或者在 AUTOEXEC.BAT 中添加 NASM 的目录路径(如果你只使用 windows 版本,你
可能愿意把 nasmw.exe 更名为 nasm.exe).

这就是 nasm 的安装,你不需要在 nasm 的目录中运行 nasm(除非你没有添加到你的路径中),你可以
删除它,如果你想节省你的硬盘空间;但是,你可能会希望保留相关文档和测试程序。

如果你下载了 dos 版本的源代码,那么 nasmXXX.zip 则会包含全部的 nasm 的源代码,然后你可以
选择 makefiles 文件,重新创建你的 nasm 拷贝。

注意: 源文件 insnsa.c, insnsd.c, insnsi.c, insnsn.c 将会由 perl 脚本通过主指令表格
(Master Instruction Table)文件 insns.dat 自动创建;文件 macros.c 将通过 standard.mac
文件由另外一个 perl 脚本自动创建。尽管 nasm v0.98 包含这些文件,如果你要修改 insns.dat,
standard.mac 和相关文档,你仍然需要重新创建它们(所以,你至少应该拥有一个 perl 的解释器)。
将来的源文件可能不会在包含着部分内容。Perl 能够运行于广泛的平台,其中也包括 dos 和 windows,
如果想获取相管信息,可以察看网站http://www.cpan.org/.

1.3.2 Unix 下安装 nasm

当你已经获取了 Unix 下的 nasm 的源代码,nasm-X.XX.tar.gz(其中 X.XX 表示压缩包中的 nasm
的版本),解压缩到一个目录下,比如 /usr/local/src. 当解压缩的时候,会自动产生一个 nasm-X.XX
子目录。

nasm 是一个自动配置的包文档: 当你解压缩以后, cd(ps: cd 是 Unix 的命令)进入你所创建的 nasm
目录,输入 ./configure. 外壳脚本(Shell Script)将会自动搜索最佳的 c 编译器进行创建工作。

当 nasm 自动配置完毕,你可以键入 make 用来建立 nasm 和 ndisasm 二进制文件,然后 make install
将它们安装到 /usr/local/bin 目录下并安装 man 帮助 nasm.1 和 ndisasm.1 到 man 的主目录
/usr/local/man/man.1. 另外,你也可以在配置时使用 --prefix 参数(更多,请察看 INSTALL),从而自
己手动安装。

Nasm 也提供了一组管理 RDOFF 自定义目标文件格式(ps: Custom object-file format),他被安装到 nasm
目录下的 rdoff 子目录中。如果愿意,你可以使用 make rdf 创建它并使用 make rdf_install 安装它。

如果 nasm 自动创建失败,你可以通过 Makefile.unx 文件来直接编译它。拷贝或者重命名该文件为 makefile
并尝试 make 它。rdoff 子目录中也同样包含一个 Makefile.unx 文件。

//========================================================================
THE END. (codez)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200310/2436.html]
本文出处:网络博客 作者:codez
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容