在gnu Binary Utilities中他们说
objdump --adjust-vma=offset
转储信息时,首先向所有部分地址添加偏移量。这个 如果节地址不对应于符号表,则它很有用 在使用格式时将部分放在特定地址时会发生这种情况 它不能代表部分地址,例如a.out。
我尝试理解它,但我不能,所以任何人都可以向我解释这个选项的作用吗?在现实生活中需要什么样的环境?
答案 0 :(得分:1)
此选项在尝试反汇编DOS COM二进制文件时非常有用。 COM二进制文件是一个程序映像,没有任何标题,在某些段中加载到地址0x100,并通过跳转到地址0x100来执行。
objdump
不知道这一点(毕竟,没有办法检测到文件是COM二进制文件)并将二进制文件反汇编,好像它已加载到地址0.传递--adjust-vma=0x100
修复了这种行为,并使objdump
反汇编二进制文件,就像它被加载到0x100(这是我们想要的)一样。
答案 1 :(得分:1)
除fuz's excellent answer之外,另一个用例是重定位自己的代码(原型示例是IBM-PC Master Boot Record中的代码。)取决于原始代码和元数据是否针对source 或目的地地址(两者都可以但不能同时出现),此选项允许您显示备用转储。