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. git本地检出远程分支

    场景:本地分支被误物理删除,想要重新将自己的分支代码从远程拉取下来.(此时取的是最后一次git push上去的分支代码) 1.与远程仓库重新建立关系 1 git clone git@gitlab.名称 ...

  2. 洛谷 P6362 平面欧几里得最小生成树

    题目描述 平面上有 \(n\) 个点,第 \(i\) 个点坐标为 \((x_i, y_i)\).连接 \(i, j\) 两点的边权为 \(\sqrt{(x_i - x_j) ^ 2 + (y_i - ...

  3. cookie机制、session机制

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  4. python 基础学习4 字典和循环语句

    学了这么多天的基础,好着急的想什么时候可以开始写个小程序,今天还是静下心来把字典和循环语句学习了 关于字典,主要是了解了字典的创建,和映射,以及一些基本的运算法,运算法不一一列出,运算法在用到的时候会 ...

  5. linux 下解决mysql root 权限无法远程连接问题

    问题描述:MySQL数据库安装成功后,在服务器本地可以连接成功,但是使用工具navicat无法进行远程连接,如图: 原因:MySQL默认只允许root帐户在本地登录,如果要在其它机器上连接mysql, ...

  6. MVC架构 项目实践

    MVC MVC架构程序的工作流程 springmvc 中dao层和service层的区别 项目实践 项目目录 项目实现流程 JSP登录页面View层 LoginServletjavaControlle ...

  7. Java服务端性能优化

    <Java程序性能优化>说性能优化包含五个层次:设计调优.代码调优.JVM调优.数据库调优.操作系统调优. 常用的几个代码优化方案: 使用单例 对于IO处理.数据库连接.配置文件解析加载等 ...

  8. SSH 登录警告:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    1.使用Linux SSH登录其他Linux或者cisco交换机时有如下报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (远程主机标识已更改) ...

  9. (8)Linux文件目录结构一览表

    1.使用 Linux 时,通过命令行输入 ls -l / 可以看到,在 Linux 根目录(/)下包含很多的子目录(称为一级目录),例如 bin.boot.dev 等.同时,各一级目录下还含有很多子目 ...

  10. Java 复习整理day05

    1 package com.it.demo01_oop; 2 3 import java.util.Arrays; 4 5 /* 6 案例: 演示面向过程和面向对象代码的区别 7 8 面向过程编程思想 ...