NASM与link、golink和alink具体例子使用对比

2023-11-10

一、OMF文件格式链接:使用import伪指令,import伪指令可以直接使用函数名,而不用给函数名加上'_'前缀和'@number'后缀,但import伪指令仅适合于OMF(borland obj)格式输出,OMF格式是MS在16位下操作系统的目标文件格式,borland仍然使用这种格式,并将格式进行了扩展,使得可以在Win32环境下使用,NASM支持这种扩展的OMF格式,但必须显式指定生成32位的obj。由于import伪指令需要OMF格式的支持,而MS的link.exe连接器会在连接时自动将OMF格式转换成COFF格式,从而无法完成导入外部标志的操作,因此,需要一个直接支持连接OMF格式的连接器,这里推荐开源连接器alink.exe。alink.exe连接器将根据import伪指令生成的连接信息,找到所需动态库,并自动导入外部函数符号。..start也是NASM针对OMF格式设计的程序入口简化标志,export伪指令生成的导出指令也将由alink.exe来执行。注意:alink.exe不支持段合并(至少我不知道如何使用alink.exe进行段合并>_<),因此,连接生成的EXE程序稍大一些,为2.51kb,有3个段,而上述另两种操作生成的EXE文件只有一个.text段。
1、32位程序例子:
;filename:obj32.asm
import MessageBoxA user32.dll
extern MessageBoxA
import ExitProcess kernel32.dll
extern ExitProcess

global obj32
export obj32

[SECTION CODE USE32 CLASS=CODE]
szTitle:
    db "SayHello",0
szMsg:
    db "Hello World!", 0
obj32:
    push 0              ;uType
    push dword szTitle  ;lpCaption
    push dword szMsg    ;lpText
    push 0              ;hWnd
    call [MessageBoxA]
    ret 16
 
..start:
    call obj32
    push 0
    call [ExitProcess]

使用alink。
cmd> nasm -fobj obj32.asm
cmd> alink -oPE  obj32.obj

2、16位程序例子:
;filename:obj16.asm
segment code  use16
str1: db "name$"

segment data use16
..start:
mov ax,code
mov ds,ax
mov dx,str1
mov ah,9
int 21h
mov ah,4ch
int 21h

使用alink。
cmd> nasm -fobj obj16.asm
cmd> alink obj16.obj

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NASM与link、golink和alink具体例子使用对比 的相关文章

随机推荐

  • AIGC井喷时代,企业应该如何保障安全?

    随着人工智能 物联网 大数据和云计算等技术的飞速发展 我们已经进入了一个AIGC 人工智能 物联网 大数据和云计算 井喷时代 这一时代为企业带来了前所未有的机会 但也伴随着巨大的安全挑战 在这篇文章中 我们将讨论企业在AIGC井喷时代如何保
  • 给Listview加上进度条

    procedure TMainForm FormShow Sender TObject var I Integer ProBar TGauge Li TListItem begin for I 0 to DataListView Items
  • JDK与sqlserver版本兼容性问题

    1 低版本的jdk编译的jar包有可能在高版本jdk环境下无法运行 高版本编译方式变化 或去除了某些方法 2 高版本jdk编译的jar也有能在低版本jdk下无法运行 高版本jdk添加了部分新的方法 jdk需与sqlserver版本与项目中j
  • 京东零售大数据云原生平台化实践

    分享嘉宾 吴维伟 京东 架构工程师 编辑整理 陈妃君 深圳大学 出品社区 DataFun 导读 随着业务调整和集群资源整合需求 大数据系统中集群数据迁移复杂混乱 本文将以京东大数据平台为例 介绍京东近一年在数据分布式存储和分层存储上的探索和
  • 宝峰uv5r怎么设置信道_宝峰UV-5R对讲机怎么操作?

    展开全部 宝峰UV 5R对讲机2113操作步骤如下 5261 1 首先拿到对讲机要4102安1653装天内线 切记对讲机在容没有安装天线的情况下切勿按动PTT键发射 这样做很容易烧毁对讲机的功放模块 2 打开对讲机 提示当前模式为 信道模式
  • vue deep Vue scoped CSS 与深度作用选择器 /deep/

    文档 https vue loader vuejs org guide scoped css html mixing local and global styles
  • 前端面试题(二)vue和react的区别

    相同点 1 都支持服务器端渲染 2 都有Virtual DOM 虚拟dom 组件化开发 都有 props 的概念 这是properties的简写 props在组件中是一个特殊的属性 允许父组件往子组件传送数据 都实现webComponent
  • GPU-Z v2.44.0 发布

    今天发布了最新版本的 TechPowerUp GPU Z 这是一款方便的图形子系统信息和诊断实用程序 适用于游戏玩家和 PC 爱好者 2 44 0 版增加了对几个新 GPU 的支持 对 Resizable BAR 检测的功能更新以及一些其他
  • 1.3 重复元素判定 A

    1 描述 接收用户输入的一个列表 如果列表中元素存在重复 则返回True 否则返回False 输入 示例1 2 8 4 3 3 0 输出 示例1 True 2 代码 ls input 读取用户输入的列表 newlst 声明一个空的列表 fo
  • MySQL 时间戳与日期互相转换函数

    1 时间戳转换成日期 函数 FROM UNIXTIME select FROM UNIXTIME 1605173621 Y年 m月 d日 参数1 要转换的时间戳 参数2 可选 要转化的格式 不写默认 y m d H i s 格式 2 把日期
  • HTTP各版本区别

    目录 http http1 0 http1 1 http2 0 多路复用 Multiplexing 二进制分帧 首部压缩 Header Compression 服务端推送 Server Push HTTP1 0 1 1 2 0 的区别 HT
  • AD从原理图到PCB超详细教程

    AD超详细教程 前言 一 建立一个工程模板 二 原理图 1 设计原理图 2 使用AD自带库和网上开源原理图库 3 画原理图库 4 编译原理图 三 PCB 1 确定元器件尺寸大小 2 绘制PCB Library 使用元器件向导绘制元件库 原理
  • redis 计时器

    之前 每次访问我们的controller 为了统计总浏览数 都回去修改数据库 我们可以做一个redis的计时器 然后通过job任务 去消费这条消息 先去查redis 里面有没有这条数据 如果没有这个数据的话 那我们就可以 往redis 里面
  • 几个cve漏洞库查询网站-什么是CVE?常见漏洞和暴露列表概述

    CVE 的英文全称是 Common Vulnerabilities Exposures 通用漏洞披露 CVE就好像是一个字典表 为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称 使用一个共同的名字 可以帮助用户在各自独立的各
  • ubantu下编译dwm缺少的依赖库

    apt get install xorg dev apt get install libx11 dev apt get install libxft dev
  • FB02编辑Coding Block字段

    默认情况下FB02是不允许更改coding block的增强字段的 需要实现可编辑需要进行两个步骤 1 实施note 3067143 2 SM30在视图TCOBX中对增强字段添加以下配置 前台效果
  • Java--软件安装、环境配置、语言类型、命名规则

    java的四大特性 自动垃圾回收 面向对象 跨平台 多线程 编译型语言和解释型语言的区别 编译型语言 运行之前 先把源文件通过指定的编译器 生成机器码文件 可以让计算机直接识别 优点 只需要编译一次 可以运行无数次 所以运行效率极高 缺点
  • 电磁场关于静电场和恒定磁场的思维导图及引申时变电磁场

    参考书目 工程电磁场导论 马西奎 电磁场与电磁波 邹澎 lt 郑大课程选定教材 gt 知乎电磁场专栏 电磁场理论基础 王蔷 整理备忘作为复习之用 本篇中所有积分符号全部采用单符号 面积和体积不再使用多积分号以便表述简单 同时符号标记使用马西
  • 基于LSTM的负荷和可再生能源出力预测(核心部分复现)

    目录 1 主要内容 长短期记忆网络介绍 2 程序结果 3 下载链接 1 主要内容 该程序复现文章 基于改进鲸鱼优化算法的微网系统能量优化管理 负荷和可再生能源预测部分 根据长短期记忆网络 Long Short Term Memory LST
  • NASM与link、golink和alink具体例子使用对比

    一 OMF文件格式链接 使用import伪指令 import伪指令可以直接使用函数名 而不用给函数名加上 前缀和 number 后缀 但import伪指令仅适合于OMF borland obj 格式输出 OMF格式是MS在16位下操作系统的