a.asm

global Start
section .text
inc dword [esi]
push edi
mov edi,[esp+0x14]
λ nasm -f win32 a.asm -l a.lst
     1                                  global Start
2 section .text
3 00000000 FF06 inc dword [esi]
4 00000002 57 push edi
5 00000003 8B7C2414 mov edi,[esp+0x14]

如果你编写的是x64指令:

λ nasm -f win64 a.asm -l a.lst
>nasm --help
Usage: nasm [-@ response_file] [options...] [--] filename
nasm -v (or --v) Options (values in brackets indicate defaults): -h show this text and exit (also --help)
-v (or --v) print the NASM version number and exit
-@ file 响应文件; 每行一个命令行选项 -o outfile 将输出写入输出文件
--keep-all 即使发生错误也不会删除输出文件 -Xformat 指定错误报告格式(gnu或vc)
-s 将错误消息重定向到stdout
-Zfile 将错误消息重定向到文件 -M 在stdout上生成Makefile依赖项
-MG d:o, 假定丢失的文件已生成
-MF file 设置Makefile依赖文件
-MD file assemble and generate dependencies
-MT file 依赖目标名称
-MQ file 依赖关系目标名称(带引号)
-MP 发出虚假目标 -f format 选择输出文件格式
bin 平面原始二进制文件(MS-DOS,嵌入式,...)[默认]
ith Intel Hex编码的平面二进制
srec 摩托罗拉S记录编码的平面二进制
aout Linux a.out
aoutb NetBSD/FreeBSD a.out
coff COFF(i386)(DJGPP,某些Unix变体)
elf32 ELF32 (i386) (Linux,大多数Unix变体)
elf64 ELF64 (x86-64) (Linux,大多数Unix变体)
elfx32 ELFx32 (ELF32 for x86-64) (Linux)
as86 as86(bin86 / dev86工具链)
obj 特尔/微软OMF(MS-DOS,OS / 2,Win16)
win32 Microsoft扩展了Win32的COFF(i386)
win64 Microsoft为Win64(x86-64)扩展了COFF
rdf 可重定位动态对象文件格式v2.0
ieee IEEE-695(LADsoft变体)目标文件格式
macho32 Mach-O i386(Mach,包括MacOS X及其变体)
macho64 Mach-O x86-64(Mach,包括MacOS X及其变体)
dbg 跟踪传递到输出阶段的所有信息
elf “elf32”的旧别名
macho “macho32”的旧别名
win “win32”的旧别名 -g 生成调试信息
-F format 选择调试格式(取决于输出格式)
-gformat 与-g -F格式相同
elf32: dwarf ELF32 (i386) dwarf (newer) [default]
stabs ELF32 (i386) stabs (older)
elf64: dwarf ELF64 (x86-64) dwarf (newer) [default]
stabs ELF64 (x86-64) stabs (older)
elfx32: dwarf ELFx32 (x86-64) dwarf (newer) [default]
stabs ELFx32 (x86-64) stabs (older)
obj: borland Borland Debug Records [default]
win32: cv8 Codeview 8+ [default]
win64: cv8 Codeview 8+ [default]
ieee: ladsoft LADsoft Debug Records [default]
macho32: dwarf Mach-O i386 dwarf for Darwin/MacOS [default]
macho64: dwarf Mach-O x86-64 dwarf for Darwin/MacOS [default]
dbg: debug Trace of all info passed to debug stage [default] -l listfile 将列表写入列表文件
-Lflags... 将可选信息添加到列表文件
-Lb 显示内置宏程序包(标准和%use)
-Ld 显示字节并以十进制而不是十六进制重复计数
-Le 显示预处理的输出
-Lf 忽略.nolist(强制输出)
-Lm 显示带有扩展参数的多行宏调用
-Lp 每过一次输出一个列表文件,以防出错
-Ls 显示所有单行宏定义
-Lw 每行之后刷新输出
-L+ 启用所有列表选项(非常详细!) -Oflags... 优化操作码,立即数和分支偏移
-O0 没有优化
-O1 最小优化
-Ox 多遍优化(默认)
-Ov 显示最后执行的通过次数
-t 以受限的SciTech TASM兼容模式组装 -E (or -e) 仅预处理(默认情况下将输出写入标准输出)
-a 不要预处理(仅assemble)
-Ipath 将路径名添加到包含文件路径
-Pfile 预包含文件(--include)
-Dmacro[=str] 预定义宏
-Umacro 取消定义宏
--pragma str 预执行特定的 %%pragma
--before str 在输入之前添加行(通常是预处理程序语句)
--no-line 忽略输入中的%line指令 --prefix str 将给定的字符串添加到所有extern的名称之前,
通用符号和全局符号(--gprefix)
--suffix str 将给定的字符串附加到所有extern的名称中,
通用符号和全局符号(--gprefix)
--lprefix str 将给定的字符串放在本地符号之前
--lpostfix str 将给定的字符串附加到本地符号 -w+x 启用警告x(-Wx)
-w-x 禁用警告x(-Wno-x)
-w[+-]error 宣传所有错误警告 (-Werror)
-w[+-]error=x 将警告x提升为错误 (-Werror=x)
all 所有可能的警告
bnd 无效的BND前缀[on]
db-empty 没有用于数据声明的操作数[on]
environment 不存在的环境变量[on]
float 所有带有“ float-”前缀的警告
float-denorm 浮点异常[关闭]
float-overflow 浮点溢出[on]
float-toolong 浮点数中的位数过多[on]
float-underflow 浮点下溢[关闭]
hle 无效的HLE前缀[on]
label 所有带有“ label-”前缀的警告
label-orphan 仅在行上加上标签,而不能在末尾加上“:”
label-redef 标签重新定义为相同的值[off]
label-redef-late label(在代码生成过程中重新定义) [error]
lock 可解锁指令上的LOCK前缀 [on]
macro 所有带有前缀的警告 "macro-"
macro-defaults 具有比可选参数更多默认值的宏 [on]
macro-params 所有带有前缀的警告 "macro-params-"
macro-params-legacy 不正确地调用多行宏以获得旧版支持 [on]
macro-params-multi 参数计数错误的多行宏调用 [on]
macro-params-single 参数计数错误的单行宏调用 [on]
negative-rep 常规%rep计数 [on]
number-overflow 数值常数不适合 [on]
obsolete 所有带有前缀的警告 "obsolete-"
obsolete-nop 指令已过时,并且是目标CPU上的noop [on]
obsolete-removed 指令已过时并已在目标CPU上删除 [on]
obsolete-valid 指令已过时,但在目标CPU上有效 [on]
phase 稳定期间的相位误差 [off]
pragma 所有带有前缀的警告 "pragma-"
pragma-bad 格式错误的%pragma [off]
pragma-empty 空%pragma指令 [off]
pragma-na %pragma不适用于此编译 [off]
pragma-unknown 未知的%pragma工具或指令 [off]
ptr 其他汇编程序中使用的非NASM关键字 [on]
regsize 寄存器大小规格被忽略 [on]
unknown-warning -W / -w或警告指令中的未知警告 [off]
user %warning指令 [on]
warn-stack-empty 警告堆栈为空 [on]
zeroing 初始化节中的RESx变为零 [on]
zext-reloc 重定位零扩展以匹配输出格式 [on]
other 上面没有特别提到的任何警告 [on] --limit-X val 设定执行极限X
passes 总通过次数[不限]
stalled-passes 没有前进的通过次数[1000]
macro-levels 宏扩展级别[10000]
macro-tokens tokens processed during single-lime macro expansion [10000000]
mmacros 最后返回之前的多行宏 [100000]
rep %rep count [1000000]
eval expression evaluation descent [8192]
lines 总处理的源代码行 [2000000000]

asm 查看字节码的更多相关文章

  1. AutoRegister ASM AOP 字节码 案例 原理 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. python查看字节码

    查看字节码可以帮助我们更好的理解python的执行流程 查看字节码列表 import opcode for op in range(len(opcode.opname)): print('0x%.2X ...

  3. 001-Eclipse、idea集成javap查看字节码、javap说明

    一.概述 分析java语言特性的一个好帮手是使用javap工具查看java编译后的字节码,如何在eclipse中配置javap工具快速查看java字节码. 二.Eclipse集成javap查看字节码 ...

  4. 【synchronized锁】通过synchronized锁 反编译查看字节码指令分析synchronized关键字修饰方法与代码块的区别

    前提: 首先要铺垫几个前置的知识: Java中的锁如sychronize锁是对象锁,Java对象头中具有标识位,当对象锁升级为重量级锁时,重量级锁的标识位会指向监视器monitor, 而每个Java对 ...

  5. Intellij IDEA中查看字节码

    首先安装插件,这俩都勾上 Intellij IDEA 直接集成了一个工具菜单,可以直接查看字节码,打开 ByteCode 插件窗口方法如下:

  6. idea 查看字节码 bytecode插件 (jclasslib Bytecode Viewer、ASM Bytecode Viewer )

    文章目录 jclasslib Bytecode Viewer ASM Bytecode Viewer jclasslib Bytecode Viewer 然后重启idea===>重新编译(构建项 ...

  7. Eclipse集成javap查看字节码

    分析java语言特性的一个好帮手是使用javap工具查看java编译后的字节码,楼主今天在学习java泛型中的桥方法时遇到一些不解,想到javap这个好工具可以帮助解答一些疑惑,索性就捣鼓如何在ecl ...

  8. eclipse中查看字节码

    1:在线安装ByteCode插件 打开Eclipse Go to"Help -> Install new Software... -> Work with:"中选择By ...

  9. IDEA 查看字节码

    参考:https://www.jianshu.com/p/18953ec8c0b7 打开工具栏 输入参数: 参数: $JDKPath$\bin\javap.exe -c $FileClass$ $Ou ...

随机推荐

  1. Java 从数组来看值传递和引用传递

    从数组来看值传递和引用传递 惯例先看一段代码 public class DemoCollection14 { public static void main(String[] args) { Stri ...

  2. 这些年来,一直不知道Code Fisrt的真实意义。

    目录 Code First 是一个糟糕的名字 放弃 EDMX,但继续实行数据库优先 Code First 是一个糟糕的名字 很多人依据它的名字认为,它是在代码定义模型,然后从模型生成数据库. Code ...

  3. 慕课网金职位 Java工程师2020 百度网盘下载

    百度网盘链接:https://pan.baidu.com/s/1xshLRO3ru0LAsQQ0pE67Qg 提取码:bh9f 如果失效加我微信:610060008[视频不加密,资料代码齐全,超清一手 ...

  4. loj10087

    Southwestern Europe 2002,题面可参考 POJ 1201. 给定 n 个闭区间 [a_i,b_i] 和 n 个整数c_i .你需要构造一个整数集合Z ,使得对于任意i (1< ...

  5. svn安装步骤

    我使用的是myeclipse 8.5  svn是site-1.8.22.zip 步骤 1.在myeclipse安装路径下dropins文件夹中创建svn文件夹 2.解压site-1.8.22.zip复 ...

  6. Kubernetes --(k8s) service

    service Kubernete Service 是一个定义了一组Pod的策略的抽象,我们也有时候叫做宏观服务.这些被服务标记的Pod都是(一般)通过label Selector决定的 对于Kube ...

  7. 当 .NET 5 遇上OpenTelemetry,会碰撞出怎样的火花?

    OpenTelemetry 介绍 我在之前的几篇文章都介绍了 OpenTelemetry, 你可以在这里找到 OpenTelemetry - 云原生下可观测性的新标准 深入研究 .NET 5 的开放式 ...

  8. pytest测试框架+jenkins结合pytest+jenkins邮件通知配置

    刚刚做完一个项目,由于这是一个方案项目,而不是产品,所以各种准备很不充分,很多公司的能力不能复用,整个团队又都是新员工,而且有部分实习生,匆忙上马,今天对我的自动化框架做一个回溯 自动化测试框架的选择 ...

  9. 关于base64编码Encode和Decode编码的几种方式--Java

    Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应用上,Base64除了能将Binary资料可视化之外 ...

  10. ThreadPoolExecutor 线程池异常消失之刨根问底

    一.情景复现 昨天,公司一个同事,急急忙忙的跑过来找我,说他的项目,出现了一个非常诡异的BUG,不知道什么情况? 同事:我用五个线程计算学生各个科目的成绩,最后汇总,本地都是正常的,但是一到测试环境就 ...