NASM 和 YASM
NASM
NASM(Netwide Assembler)是一个开源的、可移植的汇编器,它支持多种平台和操作系统。它可以用来编写16位、32位以及64位的代码,并且支持多种输出格式,包括ELF、COFF、OMF、a.out、Mach-O等。NASM使用Intel语法,与AT&T语法的汇编器(如GNU汇编器)不同。它不生成段覆盖,也不使用MASM和TASM的自动生成段覆盖功能。
NASM的安装相对简单,无论是在DOS、Windows还是Unix-like系统下,都有相应的安装方法。在DOS或Windows下,可以将NASM的压缩包解压到一个目录中,然后就可以使用其中的可执行文件了。在Unix-like系统下,可以通过源代码包来编译和安装NASM。
NASM的命令行语法允许用户指定输出文件的格式(使用-f选项),指定输出文件的文件名(使用-o选项),以及其他多种选项,如产生列表文件(使用-l选项)、预包含文件(使用-p选项)、预定义宏(使用-d选项)等。NASM还提供了一些特殊的功能,比如TASM兼容模式(使用-t选项)、多遍优化(使用-O选项)等。
NASM的语法简洁,它区分大小写,需要使用方括号来引用内存地址,并且不存储变量的类型。NASM不支持ASSUME操作符,也不支持内存模型,程序员需要自己管理这些方面。
YASM
NASM和YASM区别
NASM(Netwide Assembler)和YASM(Yet Another Assembler)都是流行的开源汇编器,它们都支持x86架构的汇编语言编程。尽管它们在很多方面都很相似,但也有一些关键的区别:
架构支持:
- NASM:主要专注于Intel x86架构,支持16位、32位和64位代码的汇编。
- YASM:除了支持x86和AMD64架构外,还旨在提供与NASM兼容的功能,并增加一些新的特性。
语法支持:
- NASM:使用自己的语法,虽然它也支持一些AT&T语法的特性。
- YASM:支持NASM语法以及GAS(GNU Assembler)语法,这使得从GNU工具链迁移到YASM更为容易。
宏处理器:
- NASM:拥有一个功能强大的宏处理器。
- YASM:提供了一个更加强大的宏处理器,能够处理更复杂的任务,如条件汇编、多行宏定义和循环等。
输出格式:
- NASM:支持多种输出格式,包括ELF、COFF和Mach-O。
- YASM:也支持多种输出格式,并且可以生成STABS、DWARF 2和CodeView 8格式的调试信息。
扩展性:
- YASM:由于其模块化设计,YASM在扩展性方面更胜一筹,更容易添加对新架构或指令集的支持。
项目活跃度:
- NASM:通常更新更频繁,社区活跃度较高。
- YASM:虽然功能强大,但开发似乎已经停滞,不如NASM活跃。
集成和兼容性:
- YASM:可以更容易地集成到Visual Studio中,支持NASM或GAS语法代码的汇编。
Python绑定:
- YASM:提供了Python API绑定,允许在Python程序中直接调用YASM。
安装和使用:
- NASM:安装和使用相对简单,社区支持良好。
- YASM:安装过程也相对简单,但可能不如NASM那样广泛地被系统包管理器所支持。
Windows安装 NASM 步骤
- 官网下载:https://www.nasm.us/
- 点击
DOWNLOAD
,跳转到如下界面;
- 选择最新版本2.16.03/版本后跳转到如下界面;
- 根据自己电脑系统位数,选择
wind64/
后跳转到如下界面;
- 直接选择可执行程序下载,如下zip文件,并解压,内部如下图;
- 在c盘的
Program Files
文件夹中新建NASM
文件夹,将nasm解压出来的文件拷贝进去;
- 将nasm的路径添加到系统环境变量中,按照
1-2-3
的步骤操作;
- PowerShell中验证,输入命令
nasm -v
,返回如下图即表示安装配置NASM成功✅。