这是 avr-objdump 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
objdump - 显示来自目标文件的信息。
概要
对象转储 [-a|--归档头文件]
[-b 名称|--目标=名称]
[-C|--demangle[=样式]]
[-d|- 拆卸]
[-D|--反汇编全部]
[-z|--disassemble-zeros]
[-EB|-这|--字节序={大 | 小的 }]
[-f|--文件头]
[-F|--文件偏移量]
[--文件开始上下文]
[-g|- 调试]
[-e|--调试标签]
[-h|--节标题|--标题]
[-i|- 信息]
[-j 部分|--节=部分]
[-l|--行号]
[-S|- 来源]
[-m |--架构= ]
[-M 选项|--反汇编选项=选项]
[-p|--私有标头]
[-P 选项|--私人=选项]
[-r|--reloc]
[-R|--动态重定位]
[-s|--全文]
[-W[lLiaprmfFsoRt]|
- 矮人[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges ,=gdb_index]]
[-G|--刺伤]
[-t|--符号]
[-T|--动态符号]
[-x|--所有标题]
[-w|- 宽的]
[--起始地址=地址]
[--停止地址=地址]
[--前缀地址]
[--[no-]显示原始insn]
[--调整-vma=抵消]
[--特殊符号]
[--前缀=字首]
[--前缀条=水平]
[--insn-宽度=宽度]
[-V|- 版]
[-H| - 帮帮我]
目标文件...
商品描述
转储 显示有关一个或多个目标文件的信息。 选项控制什么
要显示的特定信息。 此信息对以下程序员最有用
正在研究编译工具,而不是只想要他们的程序员
程序来编译和工作。
目标文件...是要检查的目标文件。 当您指定档案时, 转储 节目
每个成员目标文件的信息。
配置
此处显示为备选方案的长选项和短选项是等效的。 至少
列表中的一个选项 -a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T ,-V,-x 必须
给定的。
-a
--存档头
如果其中任何一个 目标文件 文件是档案,显示档案头信息(在一个
格式类似于 ls -l)。 除了你可以列出的信息 ar tv, 转储
-a 显示每个归档成员的目标文件格式。
--调整-vma=抵消
dump信息的时候,先添加 抵消 到所有节地址。 这是
如果段地址与符号表不对应,则很有用,它可以
在使用无法使用的格式时将节放在特定地址时发生
表示段地址,例如 a.out。
-b 名称
--目标=名称
指定目标文件的目标代码格式为 名称. 此选项可能
没有必要; 转储 可以自动识别多种格式。
例如,
objdump -b oasys -m vax -h fu.o
显示来自节标题的摘要信息 (-h)的 福,这是
明确标识(-m) 作为 Oasys 生成的格式的 VAX 对象文件
编译器。 您可以列出可用的格式 -i 选项。
-C
--去角度[=样式]
解码 (破坏) 低级符号名称转换为用户级名称。 除了删除任何
系统在前面加上初始下划线,这使得 C++ 函数名称可读。
不同的编译器有不同的修改风格。 可选的拆线方式
参数可用于为您的编译器选择合适的解压缩样式。
-g
- 调试
显示调试信息。 这试图解析 STABS 和 IEEE 调试格式
信息存储在文件中并使用类似 C 的语法打印出来。 如果两者都不是
找到这些格式此选项依赖于 -W 打印任何 DWARF 的选项
文件中的信息。
-e
--调试标签
喜欢 -g,但信息是以与 ctags 工具兼容的格式生成的。
-d
- 拆卸
显示机器指令的汇编助记符 目标文件。 这
选项只反汇编那些应该包含指令的部分。
-D
--反汇编全部
喜欢 -d,但分解所有部分的内容,而不仅仅是那些预期
包含说明。
如果目标是 ARM 架构,这个开关也有强制
反汇编器来解码在代码段中找到的数据片段,就好像它们是
指示。
--前缀地址
拆机时,每行打印完整地址。 这是旧的
反汇编格式。
-EB
-这
--endian={大|小}
指定目标文件的字节序。 这只影响拆卸。 这个可以
在反汇编不描述字节序的文件格式时很有用
信息,例如 S 记录。
-f
--文件头
显示来自每个标题的总标题的摘要信息 目标文件 文件。
-F
--文件偏移量
反汇编部分时,每当显示符号时,也显示文件
即将被转储的数据区域的偏移量。 如果零被跳过,
然后当反汇编恢复时,告诉用户跳过了多少个零和文件
从反汇编开始的位置的偏移量。 倾倒截面时,
显示转储开始位置的文件偏移量。
--文件开始上下文
指定在显示 interlisted 源代码/反汇编时(假设 -S)来自
尚未显示的文件,将上下文扩展到文件的开头。
-h
--节标题
--标题
显示来自目标文件的部分标题的摘要信息。
文件段可以重定位到非标准地址,例如通过使用
-文本, -T数据或 -TBSS 的选项 ld. 但是,某些目标文件格式,例如
a.out,不存储文件段的起始地址。 在那些情况下,
虽然 ld 正确地重新定位部分,使用 转储 -h 列出文件
节标题无法显示正确的地址。 相反,它显示了通常的
地址,对于目标来说是隐含的。
-H
- 帮帮我
打印选项摘要以 转储 并退出。
-i
- 信息
显示一个列表,显示所有可用的架构和对象格式
规格与 -b or -m.
-j 姓名
--节=姓名
仅显示部分信息 姓名.
-l
--行号
用文件名和源代码行标记显示(使用调试信息)
与显示的目标代码或重定位相对应的数字。 只对有用 -d, -D或
-r.
-m
--架构=
指定反汇编目标文件时要使用的体系结构。 这很有用
反汇编不描述体系结构信息的目标文件时,例如
作为 S 记录。 您可以使用以下命令列出可用的架构 -i 选项。
如果目标是 ARM 架构,则此开关具有附加效果。 它
将反汇编限制为仅架构支持的那些指令
由 . 如果因为输入文件需要使用这个开关
不包含任何架构信息,但也需要反汇编
所有指令使用 -马尔姆.
-M 选项
--反汇编选项=选项
将目标特定信息传递给反汇编程序。 仅支持某些目标。
如果需要指定多个反汇编器选项,则多个 -M
选项可以使用或可以一起放入逗号分隔的列表中。
如果目标是 ARM 架构,则此开关可用于选择哪个
在反汇编期间使用寄存器名称集。 指定 -M 注册名称标准 (
default) 将选择 ARM 指令集中使用的寄存器名称
文档,但寄存器 13 称为“sp”,寄存器 14 称为“lr”并注册
15 称为“PC”。 指定 -M 注册名称-apcs 将选择 ARM 使用的名称集
过程调用标准,同时指定 -M 注册名称-原始 只会使用 r 其次
通过注册号。
APCS 寄存器命名方案也有两种变体: -M 注册-
名称-atpcs 和 -M 注册名称-特殊-atpcs 使用 ARM/Thumb 过程调用
标准命名约定。 (无论是普通的寄存器名称还是特殊的
注册名称)。
此选项也可用于 ARM 体系结构以强制反汇编程序
使用开关将所有指令解释为 Thumb 指令
--反汇编器选项=force-thumb. 这在尝试拆卸时很有用
其他编译器生成的拇指代码。
对于 x86,某些选项重复了 -m 切换,但允许更好
粒度控制。 可以将以下多项选择指定为逗号
分隔的字符串。 x86 64, i386 和 i8086 为给定的选择反汇编
建筑。 英特尔 和 至 在英特尔语法模式和 AT&T 语法模式之间进行选择。
记忆法 和 att-助记符 在英特尔助记符模式和 AT&T 助记符之间进行选择
模式。 记忆法 暗示 英特尔 和 att-助记符 暗示 至. 地址64, 地址32,
地址16, data32 和 data16 指定默认地址大小和操作数大小。 这些
四个选项将被覆盖,如果 x86 64, i386 or i8086 稍后出现在选项中
细绳。 最后, 后缀, 在 AT&T 模式下,指示反汇编器打印一个
助记符后缀,即使后缀可以由操作数推断出来。
对于 PowerPC, 布克 控制 BookE 指令的反汇编。 32 和 64 选择
PowerPC 和 PowerPC64 分别反汇编。 e300 选择反汇编
e300 系列。 440 选择拆解 PowerPC 440。 聚苯硫醚 选择拆卸
PPC750CL的成对单指令。
对于 MIPS,此选项控制指令助记符名称和寄存器的打印
反汇编指令中的名称。 可从以下多项选择
指定为逗号分隔的字符串,并忽略无效选项:
“无别名”
打印“原始”指令助记符而不是一些伪指令助记符。
即,打印 'daddu' 或 'or' 代替 'move'、'sll' 代替 'nop' 等。
“妈妈”
反汇编 MSA 说明。
“虚拟”
反汇编虚拟化ASE指令。
“xpa”
反汇编扩展物理地址 (XPA) ASE 指令。
“gpr-名称=ABI”
根据指定的 ABI 打印 GPR(通用寄存器)名称。
默认情况下,根据二进制文件的 ABI 选择 GPR 名称
拆卸。
“fpr-名称=ABI”
根据指定的 ABI 打印 FPR(浮点寄存器)名称。
默认情况下,打印 FPR 编号而不是名称。
“cp0-名称=拱”
将 CP0(系统控制协处理器;协处理器 0)寄存器名称打印为
适用于指定的 CPU 或架构 拱. 默认情况下,CP0
根据二进制的体系结构和CPU选择寄存器名称
被拆解。
"hwr-names=拱”
将 HWR(硬件寄存器,由“rdhwr”指令使用)名称打印为
适用于指定的 CPU 或架构 拱. 默认情况下,HWR 名称
根据二进制文件的架构和 CPU 选择
拆卸。
“注册名称=ABI”
根据所选 ABI 打印 GPR 和 FPR 名称。
“注册名称=拱”
根据需要打印特定于 CPU 的寄存器名称(CP0 寄存器和 HWR 名称)
所选的 CPU 或架构。
对于上面列出的任何选项, ABI or 拱 可以指定为 数字 具有
为选定类型的寄存器打印数字而不是名称。 你可以列出
的可用值 ABI 和 拱 使用 - 帮帮我 选项。
对于 VAX,您可以指定函数入口地址 -M 条目:0xf00ba。 您可以使用
多次正确反汇编不包含符号的 VAX 二进制文件
表(如 ROM 转储)。 在这些情况下,否则函数入口掩码将是
解码为 VAX 指令,这可能会导致函数的其余部分被
错误地拆卸。
-p
--私有标头
打印特定于目标文件格式的信息。 确切的信息
打印取决于目标文件格式。 对于某些目标文件格式,没有
打印附加信息。
-P 选项
--私人=选项
打印特定于目标文件格式的信息。 论据 选项 is
取决于格式的逗号分隔列表(显示选项列表
有了。。的帮助)。
对于 XCOFF,可用选项有: 头, 八月, 部分, 符号, 重新定位, 线诺,
装载机, 除, 打字机, 追溯, TOC 和 资料.
-r
--reloc
打印文件的重定位条目。 如果与 -d or -D, 重定位是
印刷中穿插着拆解。
-R
--动态重定位
打印文件的动态重定位条目。 这仅对动态有意义
对象,例如某些类型的共享库。 至于 -r,如果与 -d or -D,
重新定位打印与拆卸穿插。
-s
--全文
显示请求的任何部分的完整内容。 默认所有非空
显示部分。
-S
- 来源
如果可能,显示与反汇编混合的源代码。 暗示 -d.
--前缀=字首
指定 字首 使用时添加到绝对路径 -S.
--前缀条=水平
指示要去除硬连线绝对路径的初始目录名称的数量。
没有它就没有效果 --前缀=字首.
--显示原始insn
反汇编指令时,以十六进制和符号形式打印指令
形式。 这是默认值,除非 --前缀地址 用来。
--没有显示原始insn
反汇编指令时,不要打印指令字节。 这是
默认时间 --前缀地址 用来。
--insn-宽度=宽度
屏 显: 宽度 反汇编指令时将字节放在一行上。
-W[lLiaprmfFsoRt]
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev ,=trace_aranges,=gdb_index]
显示文件中调试部分的内容(如果存在)。 如果一个
的可选字母或单词跟在 switch 之后,那么只有在这些字母或单词中找到的数据
特定部分将被转储。
请注意,没有单个字母选项来显示跟踪部分的内容或
.gdb_index。
注:输出 =信息 选项也会受到选项的影响
--侏儒深度是, --矮人开始 和 --侏儒检查.
--矮人深度=n
将“.debug_info”部分的转储限制为 n 孩子们。 这仅适用于
--dwarf=信息. 默认是打印所有 DIE; 特殊值 0 n 还将
有这个效果。
对于非零值 n, DIE 等于或深于 n 将不会打印级别。 这
范围 n 是基于零的。
--矮人开始=n
仅打印以 DIE 编号开头的 DIE n. 这仅适用于
--dwarf=信息.
如果指定,此选项将禁止打印任何标题信息和所有
在 DIE 编号之前的 DIE n. 只有指定 DIE 的兄弟姐妹和孩子
被打印。
这可以与 --侏儒深度.
--侏儒检查
为 Dwarf 信息的一致性启用额外检查。
-G
--刺伤
显示请求的任何部分的完整内容。 显示内容
ELF 文件中的 .stab 和 .stab.index 和 .stab.excl 部分。 这只是有用
在其中“.stab”调试符号表条目的系统(例如 Solaris 2.0)上
在 ELF 部分进行。 在大多数其他文件格式中,调试符号表条目
与链接符号交错,并在 --符号 输出。
--起始地址=地址
在指定地址开始显示数据。 这会影响输出 -d, -r
和 -s 选项。
--停止地址=地址
停止在指定地址显示数据。 这会影响输出 -d, -r
和 -s 选项。
-t
--符号
打印文件的符号表条目。 这类似于信息
由...提供 nm 程序,虽然显示格式不同。 的格式
输出取决于被转储的文件的格式,但有两个主要的
类型。 一个看起来像这样:
[4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss
[ 6](秒 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 弗雷德
其中方括号内的数字是符号中条目的编号
表 秒 number 是节号, fl 值是符号的标志位,
此 ty number 是符号的类型, scl number 是符号的存储类和
此 nx value 是与符号关联的辅助条目的数量。 最后
两个字段是符号的值及其名称。
另一种常见的输出格式,通常在基于 ELF 的文件中看到,如下所示:
00000000 ld .bss 00000000 .bss
00000000 g .text 00000000 弗雷德
这里的第一个数字是符号的值(有时称为它的地址)。
next 字段实际上是一组表示标志位的字符和空格
符号上设置的。 这些字符描述如下。 接下来是
与符号相关联的部分或 *ABS* 如果该部分是绝对的(即
与任何部分无关),或 *联合国* 如果该部分在文件中被引用
被转储,但没有在那里定义。
在部分名称之后是另一个字段,一个数字,对于常用符号是
对齐和其他符号是大小。 最后显示符号的名称。
标志字符分为7组如下:
“ l”
“G”
“你”
“!” 符号是局部的(l),全局的(g),唯一的全局的(u),既不是全局的也不是局部的
(一个空格)或全局和局部(!)。 符号既不能是局部的也不能是全局的
出于各种原因,例如,因为它用于调试,但它是
如果它既是本地的又是全局的,则可能表明存在错误。 独特的
全局符号是标准 ELF 符号绑定集的 GNU 扩展。
对于这样的符号,动态链接器将确保在整个过程中
只有一个具有此名称和类型的符号在使用。
“w” 符号是弱(w)或强(空格)。
“C”符号表示构造函数(C)或普通符号(空格)。
“W”符号是警告(W)或正常符号(空格)。 警告符号的名称
是当警告符号后面的符号出现时要显示的消息
参考。
“一世”
"i" 符号是对另一个符号 (I) 的间接引用,一个要被处理的函数
在 reloc 处理 (i) 或普通符号(空格)期间评估。
“ d”
“D”符号是调试符号(d)或动态符号(D)或正常符号(a
空间)。
“F”的
“F”
"O" 符号是函数 (F) 或文件 (f) 或对象 (O) 的名称或只是一个
普通符号(空格)。
-T
--动态符号
打印文件的动态符号表条目。 这仅对
动态对象,例如某些类型的共享库。 这类似于
提供的资料 nm 程序当给出 -D (- 动态的) 选项。
--特殊符号
当显示的符号包括目标认为在某些方面特殊的符号时
用户通常不会感兴趣的方式。
-V
- 版
打印版本号 转储 并退出。
-x
--所有标题
显示所有可用的头信息,包括符号表和重定位
条目。 使用 -x 相当于指定所有 -a -f -h -p -r -t.
-w
- 宽的
为超过 80 列的输出设备格式化一些行。 也不要
显示时截断符号名称。
-z
--disassemble-zeros
通常,反汇编输出将跳过零块。 此选项指示
反汇编器来反汇编这些块,就像任何其他数据一样。
@文件
从中读取命令行选项 文件. 读取的选项被插入代替
原来的 @文件 选项。 如果 文件 不存在或无法读取,则该选项
将按字面处理,而不是删除。
中的选项 文件 由空格分隔。 可以包含空格字符
通过用单引号或双引号将整个选项括在一个选项中。 任何
字符(包括反斜杠)可以通过在字符前加上前缀来包含
包含反斜杠。 这 文件 可能本身包含额外的@文件 选项; 任何
这些选项将被递归处理。
使用 onworks.net 服务在线使用 avr-objdump