objdump,显示没有偏移

时间:2011-12-17 01:21:51

标签: objdump

转储可执行文件时,我只希望代码段打印标准输出。不是偏移和二进制形式的代码。我可以注意到它来自man objdump.Is有办法吗?

2 个答案:

答案 0 :(得分:4)

您可以使用

禁止对象代码十六进制转储
--no-show-raw-insn

如果您在代码中跳转,那么您需要偏移来理解它们,但是如果您真的想要剥离它们,请使用以下内容过滤代码:

objdump -d --no-show-raw-insn myfile.o | perl -p -e 's/^\s+(\S+):\t//;'

示例输出:

0000000000000000 <foo>:
retq
lea    0x0(%rsi),%rsi
lea    0x0(%rdi),%rdi
Disassembly of section .gnu.linkonce.t.goo:

0000000000000000 <goo>:
retq
lea    0x0(%rsi),%rsi
lea    0x0(%rdi),%rdi

答案 1 :(得分:0)

如果要获得与显示的 Peeter Joot 相同的输出,但不使用 Perl 命令行。然后,您可以改为使用 Grep Cut 工具,如下所示。

from decimal import *

#start:
lInputSequence = []
i = 1

def suffix():
    if i%10 == 1 and i != 11:
        return "st"
    elif i%10 == 2 and i != 12:
        return "nd"
    elif i%10 == 3 and i != 13:
        return "rd"
    else:
        return "th"

decInputElement = 1
while True:
    try:
        decInputElement = Decimal(input("Enter " + str(i)
                                        + "%s element (or type '0' to finish). \n" % suffix()))
        if decInputElement == 0:
            break
        else:
            lInputSequence.append(decInputElement)
            i = i+1
    except Exception:
        print("Please enter a number.")
print(lInputSequence)
print("The sum of these %s elements is %s" % (len(lInputSequence),sum(lInputSequence)))
#end