Windows 环境上安装 NASM 和 YASM 教程

news/2024/12/22 9:32:41/

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

  • YASM(Yet Another Static Macro Assembler)是一个开源、模块化、可移植的x86汇编器,它旨在提供与NASM(NetwideAssembler)兼容的功能,并增加一些新的特性。YASM支持x86和AMD64架构,但不支持ARM架构。它可以接受NASM和GAS(GNU Assembler)汇编器的语法,输出多种格式的对象文件,包括二进制文件、ELF32、ELF64、32位和64位Mach-O、RDOFF2、COFF、Win32和Win64对象格式。YASM还能够生成STABS、DWARF
    2和CodeView 8格式的源代码调试信息。

NASM和YASM区别

NASM(Netwide Assembler)和YASM(Yet Another Assembler)都是流行的开源汇编器,它们都支持x86架构的汇编语言编程。尽管它们在很多方面都很相似,但也有一些关键的区别:

  1. 架构支持

    • NASM:主要专注于Intel x86架构,支持16位、32位和64位代码的汇编
    • YASM:除了支持x86和AMD64架构外,还旨在提供与NASM兼容的功能,并增加一些新的特性。
  2. 语法支持

    • NASM:使用自己的语法,虽然它也支持一些AT&T语法的特性。
    • YASM:支持NASM语法以及GAS(GNU Assembler)语法,这使得从GNU工具链迁移到YASM更为容易。
  3. 宏处理器

    • NASM:拥有一个功能强大的宏处理器。
    • YASM:提供了一个更加强大的宏处理器,能够处理更复杂的任务,如条件汇编、多行宏定义和循环等。
  4. 输出格式

    • NASM:支持多种输出格式,包括ELF、COFF和Mach-O。
    • YASM:也支持多种输出格式,并且可以生成STABS、DWARF 2和CodeView 8格式的调试信息。
  5. 扩展性

    • YASM:由于其模块化设计,YASM在扩展性方面更胜一筹,更容易添加对新架构或指令集的支持。
  6. 项目活跃度

    • NASM:通常更新更频繁,社区活跃度较高。
    • YASM:虽然功能强大,但开发似乎已经停滞,不如NASM活跃。
  7. 集成和兼容性

    • YASM:可以更容易地集成到Visual Studio中,支持NASM或GAS语法代码的汇编
  8. Python绑定

    • YASM:提供了Python API绑定,允许在Python程序中直接调用YASM。
  9. 安装和使用

    • NASM:安装和使用相对简单,社区支持良好。
    • YASM:安装过程也相对简单,但可能不如NASM那样广泛地被系统包管理器所支持。

Windows安装 NASM 步骤

  1. 官网下载:https://www.nasm.us/
    在这里插入图片描述
  2. 点击 DOWNLOAD,跳转到如下界面;
    在这里插入图片描述
  3. 选择最新版本2.16.03/版本后跳转到如下界面;
    在这里插入图片描述
  4. 根据自己电脑系统位数,选择wind64/后跳转到如下界面;
    在这里插入图片描述
  5. 直接选择可执行程序下载,如下zip文件,并解压,内部如下图;
    在这里插入图片描述
    在这里插入图片描述
  6. 在c盘的Program Files文件夹中新建NASM文件夹,将nasm解压出来的文件拷贝进去;
    在这里插入图片描述
  7. nasm的路径添加到系统环境变量中,按照1-2-3的步骤操作;
    在这里插入图片描述
  8. PowerShell中验证,输入命令 nasm -v,返回如下图即表示安装配置NASM成功✅。
    在这里插入图片描述

Windows安装 YASM 步骤

  1. 官网下载:https://yasm.tortall.net/
    在这里插入图片描述
  2. 点击 Download,跳转到如下界面;
    在这里插入图片描述
  3. 点击Wind64.exe下载如下可执行程序;
    在这里插入图片描述
  4. 在c盘的Program Files文件夹中新建YASM文件夹,将yasm拷贝进去,并改名为yasm
    在这里插入图片描述
  5. yasm的路径添加到系统环境变量中,按照1-2-3的步骤操作;
    在这里插入图片描述
  6. 验证是否安装配置成功,PowerShell中输入命令 yasm --version,如果返回如下图,则表示安装配置成功✅。
    在这里插入图片描述

http://www.ppmy.cn/news/1534365.html

相关文章

linux和windows系统使用k8s控制节点的kubernetes资源

一般linux获取master控制节点的授权: [rootharbor ~]# vim /etc/hosts 192.168.1.30 harbor 192.168.1.50 master 192.168.1.51 node-0001 192.168.1.52 node-0002 192.168.1.53 node-0003 192.168.1.54 node-0004 192.168.1.55 node-0005#下…

Linux之Docker虚拟化部署

上传docker安装包 解压安装包 将解压后的docker文件夹移动到/usr/local/文件夹下 docker 启动命令/usr/local/docker/dockerd 但是启动报错,意思是没有docker用户组 创建docker用户组,执行完会生成套接字文件 将套接字文件加入该用户组管理 第二个错误原…

【Linux】进程概念-2

文章目录 1.环境变量1.1 基本概念1.2 常见环境变量1.3 查看环境变量方法1.4 测试PATH1.5 测试HOME1.6 和环境变量相关的命令1.7 环境变量的组织方式1.8 通过代码如何获取环境变量1.9 通过系统调用获取或设置环境变量1.10 环境变量通常是具有全局属性的1.11 实验 2. 程序地址空间…

HarmonyOS Next应用开发——响应式布局之媒体查询

响应式布局之媒体查询 媒体查询作为响应式设计的核心,在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式,常用于多屏幕的应用适配。媒体查询常用于下面两种场景: 针对设备和应用的属性信息(…

Poetry进行python项目创建和管理

Poetry 是一个用于依赖管理和打包的工具,它让创建和管理 Python 项目变得更加简单。以下是如何使用 Poetry 创建和管理 Python 项目的步骤。 安装 Poetry 首先,你需要安装 Poetry。你可以使用官方提供的安装脚本来安装 Poetry: curl -sSL …

Excel提取数据

Excel提取数据 在使用Excel的过程中,我需要将带有评语的评分的文本内容提取出评分,如下所示 其中分数与文本之间用空格分隔,只有分数的评语会自动靠右对齐,我需要做的就是将B列的评语从中提取出分数放到C列中,以下为实…

车辆重识别(利用扩散模型合成有效数据进行行人再识别预训练)论文阅读2024/9/27

[1]Synthesizing Efficient Data with Diffusion Models for Person Re-Identification Pre-Training 作者:Ke Niu1, Haiyang Yu1, Xuelin Qian2, Teng Fu1, Bin Li1, Xiangyang Xue1*单位:1复旦大学, 2西北工业大学 摘要: 现有的行人重识别…

如何在ChatGPT的帮助下,使用“逻辑回归”技巧完成论文写作?

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 逻辑回归作为一种统计分析工具广泛应用,以解决研究中的分类问题。其主要作用在于探讨和量化自变量对因变量的影响,从而揭示潜在的因果关系。 在论文写作中&…