zoukankan      html  css  js  c++  java
  • asm 查看字节码

    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]
    
  • 相关阅读:
    Python 标准库 BaseHTTPServer 中文翻译
    DBA Scripts
    cordova开发自己定义插件
    ASUS主板ALC887声卡,RTL81XX网卡,黑苹果驱动安装
    com.apple.installer.pagecontroller 错误 -1 pkg安装错误
    Apple 远程推送APNS 服务
    bitbucket git push 项目503失败
    在xcode5下利用Source Control 做 git 项目管理
    iOS设备定位服务开启判定
    has been modified since the precompiled header地图错误
  • 原文地址:https://www.cnblogs.com/ajanuw/p/13443554.html
Copyright © 2011-2022 走看看