Windows 环境上安装 NASM 和 YASM 教程

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.mfbz.cn/a/886473.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GS-SLAM论文阅读笔记--GEVO

前言 这篇文章看着就让人好奇。众所周知,高斯是一个很不错的建图方法,但是本文的题目居然是只用高斯进行单目VO,咱也不知道这是怎么个流程,看了一下作者来自于MIT,说不定是个不错的工作,那就具体看看吧&am…

LeetCode从入门到超凡(五)深入浅出---位运算

引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的LeetCode学习总结文档;本文主要讲解 位运算算法。💕💕😊 一、 位运算简介 1.什么是位…

简易CPU设计入门:取指令(三),ip_buf与rd_en的非阻塞赋值

在开篇,还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&…

【重学 MySQL】五十一、更新和删除数据

【重学 MySQL】五十一、更新和删除数据 更新数据删除数据注意事项 在MySQL中,更新和删除数据是数据库管理的基本操作。 更新数据 为了更新(修改)表中的数据,可使用UPDATE语句。UPDATE语句的基本语法如下: UPDATE ta…

【ADC】噪声(1)噪声分类

概述 本文学习于TI 高精度实验室课程,总结 ADC 的噪声分类,并简要介绍量化噪声和热噪声。 文章目录 概述一、ADC 中的噪声类型二、量化噪声三、热噪声四、量化噪声与热噪声对比 一、ADC 中的噪声类型 ADC 固有噪声由两部分组成:第一部分是量…

【重学 MySQL】四十六、创建表的方式

【重学 MySQL】四十六、创建表的方式 使用CREATE TABLE语句创建表使用CREATE TABLE LIKE语句创建表使用CREATE TABLE AS SELECT语句创建表使用CREATE TABLE SELECT语句创建表并从另一个表中选取数据(与CREATE TABLE AS SELECT类似)使用CREATE TEMPORARY …

【JVM】垃圾释放方式:标记-清除、复制算法、标记-整理、分代回收

文章目录 1. 标记-清除2. 复制算法4. 标记-整理4. 分代回收 把标记为垃圾的对象的内存空间进行释放。主要有三种释放方式 1. 标记-清除 把标记为垃圾的对象,直接释放掉(最朴素的做法) 此时就是把标记为垃圾的对象所对应的内存空间直接释放。…

本地化测试对游戏漏洞修复的影响

本地化测试在游戏开发的质量保证过程中起着至关重要的作用,尤其是在修复bug方面。当游戏为全球市场做准备时,它们通常会被翻译和改编成各种语言和文化背景。这种本地化带来了新的挑战,例如潜在的语言错误、文化误解,甚至是不同地区…

k8s中,ingress的实现原理,及其架构。

图片来源:自己画的 图片来源:k8s官网 首先,什么是ingress? 是服务还是控制器? 都不精确 ingress是一个api资源 service和deployment也是api资源。 这几个相互协作,组建成一个对外提供服务的架构。 ingress提供的…

MDM监管锁系统上锁流程

上锁与解锁 上锁设备 完整的上锁流程可参考: https://b23.tv/UvM35sU 上锁需要已经注册了一个普通用户 并使用管理员分配了台数 且有可用的MDM证书和ABM证书(公有和私有的都可以 只要有可用的就可以) 一部用来上锁的手机 链接wifi wifi必须要是2.4g频段 不要使用5gwifi 上锁…

HTTPS协议详解:从原理到流程,全面解析安全传输的奥秘

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

(done) 声音信号处理基础知识(11) (Complex Numbers for Audio Signal Processing)

参考:https://www.youtube.com/watch?vDgF4m0AWCgA&t1047s 似乎是因为信号处理需要使用复数,作者花了一节课介绍复数 据油管主所说,声学信号处理中引入复数的原因是:快速完成部分计算 这里的例子是,当我们做傅里…

行为型模式-命令-迭代-观察者-策略

命令模式 是什么 将一个请求封装成为一个对象, 从而可以使用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及可以撤销的操作 实例 请求封装成为对象 //用来声明执行操作的接口 public abstract class Command { protected Receiver receiver; public Comma…

物联网智能项目全面解析

目录 引言 一、物联网概述 1.1 什么是物联网 1.2 物联网的历史与发展 二、物联网智能项目分类 三、关键组件与技术 3.1 传感器和执行器 3.2 连接技术 3.3 数据处理与分析 3.4 用户界面 四、物联网智能项目案例分析 4.1 智能家居 4.2 智慧城市 4.3 工业物联网 4.4…

react-问卷星项目(3)

项目实战 React Hooks 缓存,性能优化,提升时间效率,但是不要为了技术而优化,应该是为了业务而进行优化 内置Hooks保证基础功能,灵活配合实现业务功能,抽离公共部分,自定义Hooks或者第三方&am…

【Kubernetes】常见面试题汇总(五十四)

目录 120.创建 init C 容器后,其状态不正常? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属于【Kubernetes】的生产…

Swagger配置且添加小锁(asp.net)(笔记)

此博客是基于 asp.net core web api(.net core3.1)框架进行操作的。 一、安装Swagger包 在 NuGet程序包管理中安装下面的两个包: swagger包:Swashbuckle.AspNetCore swagger包过滤器:Swashbuckle.AspNetCore.Filters 二、swagger注册 在…

开源 AI 智能名片 O2O 商城小程序与抖音:品牌传播的新机遇与挑战

摘要:本文探讨了开源 AI 智能名片 O2O 商城小程序在品牌传播中的作用,以及与抖音平台相结合所带来的机遇与挑战。分析了抖音如何利用算法适配品牌调性为门店找到目标消费者,放大品牌势能,同时阐述了新品牌在抖音上进行品牌传播的优…

C++平台跳跃游戏

目录 开头程序Game.cpp源文件Player.h头文件Player.cpp源文件 程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 Game.cpp源文件 #include <iostream> #include "Player.h" using namespace std; void printma…

[数据集][目标检测]电力场景防震锤缺陷检测数据集VOC+YOLO格式705张1类别

重要说明&#xff1a;防震锤缺陷图片太难找&#xff0c;数据集里面存在大量单一场景图片&#xff0c;请仔细查看图片预览谨慎下载&#xff0c;此外数据集均为小目标检测&#xff0c;如果训练map偏低属于正常现象 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径…