zoukankan      html  css  js  c++  java
  • NASM网际编译器手册(一)

    NASM网际编译器手册:
    此手册为NASM,网际汇编器:一个目标为Intelx86系列处理器,开放源码的编译器。
    第一章:简介
    1.1节 什么是NASM?
    1.1.1节 为什么用另外的编译器?
    1.1.2节 许可证
    1.2节 联络方式
    1.3节 安装
    1.3.1节 在MS_DOS或Windows下安装NASM
    1.3.2节 在Unix下安装NASM

    第二章:运行NASM
    第2.1节 :那NASM命令行参数
    第2.1.1节:-o参数:指定输出文件名
    第2.1.2节:-f参数:指定输出文件格式
    第2.1.3节:-l参数:输出列表文件
    第2.1.4节:-E参数:输出错误信息到文件中
    第2.1.5节:-s参数:输出错误信息到屏幕
    第2.1.6节:-i参数:指定头文件路径
    第2.1.7节:-p参数:预编译头文件
    第2.1.8节:-d参数:预编译宏
    第2.1.9节:-u参数:取消宏定义
    第2.1.10节:-e参数:只预处理
    第2.1.11节:-a参数:根本不预处理
    第2.1.12节:-w参数:允许或禁止汇编警告信息
    第2.1.13节:NASM的环境变量
    第2.2节 对于MASM用户的快速入门
    第2.2.1节 NASM是区分大小写的
    第2.2.2节 NASM对内存操作需要方括号
    第2.2.3节 NASM不存储存变量类型
    第2.2.4节 NASM不用ASSUME关键字
    第2.2.5节 NASM不支持内存模型
    第2.2.6节 浮点数方面的区别
    第2.2.7节 其它区别
    第三章
    第3.1节 NASM源码行号的分布
    第3.2节 伪指令
    第3.2.1节 DB及相关指令:声明初始化数据
    第3.2.2节 RESB及相关指令:声明未初始化数据
    第3.2.3节 INCBIN:包含外部二进制文件
    第3.2.4节 EQU:定义常量
    第3.2.5节 TIMES:重复指令或数据
    第3.3节 有效地址
    第3.4节 常量
    第3.4.1节 数字常量
    第3.4.2节 字符常量
    第3.4.3节 字符串常量
    第3.4.4节 浮点数常量
    第3.5节 表达式
    第3.5.1节 |:位运算符或
    第3.5.2节 ^位运算符异或
    第3.5.3节 &位运算符与
    第3.5.4节 <<和>>:位移动操作符
    第3.5.5节 +和-:加和减操作符
    第3.5.6节 *,/,//,%和%%:乘法与除法操作
    第3.5.7节 一元操作符:+,-,~和SEG
    第3.6节 SEG和WRT
    第3.7节 临界资源表达式
    第3.8节 本地变量
    第4章 NASM的预处理器
    第4.1节 单行的宏操作
    第4.1.1节 正常处理方式:%define
    第4.1.2节 立即处理的单行宏:%xdefine
    第4.1.3节 未定义的宏:%undef
    第4.1.4节 预处理变量:%assign
    第4.2节 多行宏的操作
    第4.2.1节 重载多行宏:%macro
    第4.2.2节 本地宏标识
    第4.2.3节 贪婪的宏参数
    第4.2.4节 默认宏参数
    第4.2.5节 %0:宏参数记数
    第4.2.6节 %rotate:旋转宏参数
    第4.2.7节 控制台的宏参数
    第4.2.8节 用宏参数做为条件语句
    第4.2.9节 禁止列表展开
    第4.3节 条件汇编
    第4.3.1节 %ifdef:测试单行宏的存在性
    第4.3.2节 %ifctx:测试上下相连的堆栈
    第4.3.3节 %if:测试任意数字表达式
    第4.3.4节 %ifidn和%ifidni:测试试验性文本标记
    第4.3.5节 %ifid,%ifnum,%ifstr:测试标记类型
    第4.3.6节 %error:报告用户自定义的错误
    第4.4节 预处理循环:%rep
    第4.5节 包含其它文件
    第4.6节 上下相关的堆栈
    第4.6.1节 %push和%pop:创建和移走上下环境
    第4.6.2节 前后相关的本地变量
    第4.6.3节 前后相关的单行宏
    第4.6.4节 %repl:重命名一个前后相关环境
    第4.6.5节 用前后相关堆栈的一个例子:IFs块
    第4.7节 标准宏
    第4.7.1节 _NASM_MAJOR_和_NASM_MINOR_:NASM版本信息
    第4.7.2节 _FLLE_和_LINE_:文件名和行号
    第4.7.3节 STRUC 与ENDSTRUC:定义结构数据类型
    第4.7.4节 ISTRUC,AT 与IEND :定义结构的变量
    第4.7.5节 ALIGN 和ALIGNB:数据对齐方式
    第5章 汇编方向性
    第5.1节 BITS:指定目标处理器模式
    第5.2节 SECTION或SEGMENT:改变和定义段
    第5.2.1节 _SECT_宏
    第5.3节 ABSOLUTE:定义绝对标号
    第5.4节 EXTERN:从其它模块导入符号
    第5.5节 GLOBAL:向其它模块输入信息
    第5.6节 COMMON:定义通用数据块

    第6章 输出格式
    第6.1节 bin:平坦二进制输出
    第6.1.1节 ORG:二进制文件源码
    第6.1.2节 bin扩展到SECTION方向
    第6.2节 obj:微软的OMF目标文件格式
    第6.2.1节 obj扩展到SECTION方向
    第6.2.2节 GROUP:定义段的组信息
    第6.2.3节 UPPERCASE:禁止输出时大小区别
    第6.2.4节 IMPORT:导入DLL符号
    第6.2.5节 EXPORT:导出DLL符号
    第6.2.6节 ..start:定义程序输入点位置
    第6.2.7节 obj 扩展到EXTERN 方向
    第6.2.8节 obj扩展到COMMON方向
    第6.3节 win32:微软Win32目标文件
    第6.3.1节 win32:扩展到SECTION方向
    第6.4节 coff:通用目标文件格式
    第6.5节 elf:Linux ELF目标文件
    第6.5.1节 elf扩展到SECTION方向
    第6.5.2节 位置独立代码:elf指定符号和WRT
    第6.5.3节 elf扩展到GLOBAL方向
    第6.5.4节 elf扩展到COMMON方向
    第6.6节 aout:Linux a.out目标文件
    第6.7节 aoutb:NetBSD/FreeBSD/OpenBSD a.out目标文件
    第6.8节 as86:Linux as86 目标文件
    第6.9节 rdf:重定位动态目标文件格式
    第6.9.1节 需求库:LIBERARY方向
    第6.10节 dbg:Debuging 格式

    第7章 写16位代码(DOS,Windows 3/3.1)
    第7.1节 生成.EXE文件
    第7.1.1节 用obj格式生成.exe文件
    第7.1.2节 用bin格式生成.exe文件
    第7.2节 生成.com文件
    第7.2.1节 用bin格式生成.com文件
    第7.2.2节 用obj格式生成.com文件
    第7.3节 生成.sys文件
    第7.4节 与16位C程序的接口
    第7.4.1节 外部符号名
    第7.4.2节 内存模型
    第7.4.3节 函数定义与函数调用
    第7.4.4节 数据项的访问
    第7.4.5节 c16.mac:16位C接口的帮助宏
    第7.5节 Borland Pascal程序接口
    第7.5.1节 Pascal调用转换
    第7.5.2节 Borland Pascal段命名限制
    第7.5.3节 在Pascal程序中用c16.mac
    第8章 写32位代码(Unix,Win32,DJGPP)
    第8.1节 32位C语言接口
    第8.1.1节 外部符号名
    第8.1.2节 函数定义与函数调用
    第8.1.3节 数据项的访问
    第8.1.4节 c32.mac:32位C接口的帮助宏
    第8.2节 写NetBSD/FreeBSD/OpenBSD和Linux/ELF共享库
    第8.2.1节 包含GOT地址
    第8.2.2节 寻找程序本地数据项
    第8.2.3节 寻找外部和通用数据项
    第8.2.4节 导出符号到库用户
    第8.2.5节 在库外部调用过程
    第8.2.6节 生成库文件

    第9章16位与32位混和编程
    第9.1节 混和尺寸的跳转
    第9.2节 不同尺寸段间的寻址
    第9.3节 其它的混和尺寸指令

    第10章 问题解答
    第10.1节 常见问题
    第10.1.1节 NASM 生成无效的代码
    第10.1.2节 我程序中跳转出界了
    第10.1.3节 ORG不能工作了
    第10.1.4节 TIMES 不能工作了
    第10.2节 Bugs程序中的问题

  • 相关阅读:
    苏菲玛索的早年写真真的迷人
    VC编程技巧:IE控件的高级用法
    玫举窗口句柄,然后用窗口句柄去取得进程ID,比较得到的进程ID是不是你的进程ID....
    一个封装的XMLHttp Object Pool and XMLHttp chunnel Pool,挺不错
    VSTS For Testers读书笔记(3)
    VSTS For Testers读书笔记(8)
    美丽的厦门
    VSTS For Testers读书笔记(10)
    VSTS For Testers读书笔记(7)
    VSTS For Testers读书笔记(12)
  • 原文地址:https://www.cnblogs.com/cnlmjer/p/4099886.html
Copyright © 2011-2022 走看看