vfdff 发表于 2010-10-27 00:47

(gdb) disas/r exit1
Dump of assembler code for function exit1(int):
0x08048860 <exit1(int)+0>:       e9 bc ff ff ff        jmp    0x8048821 <exit_stub(int)>
0x08048865 <exit1(int)+5>:       18 c7        sbb    %al,%bh
0x08048867 <exit1(int)+7>:       04 24        add    $0x24,%al
0x08048869 <exit1(int)+9>:       fe 8a 04 08 e8 ae        decb   -0x5117f7fc(%edx)
0x0804886f <exit1(int)+15>:       fb        sti   
0x08048870 <exit1(int)+16>:       ff        (bad)
0x08048871 <exit1(int)+17>:       ff c9        dec    %ecx
0x08048873 <exit1(int)+19>:       c3        ret   
End of assembler dump.
(gdb)

确实可以,只是显示的汇编代码格式有点乱,不如objdump好看

erazy0 发表于 2010-12-05 21:00

学习了

teawater_cu 发表于 2010-12-06 23:56

/r 的PATCH不是我写的么?

yjf_victor 发表于 2012-03-24 23:24

本帖最后由 yjf_victor 于 2012-03-24 23:26 编辑

键入“disassemble函数名”即可看到函数的反汇编,如果要与机器语言对应,就用“disassemble/r函数名”。

还有,那个gdb反汇编的的汇编代码默认的是AT&T汇编。如果不习惯,可以键入“set disassembly-flavor intel”,就能显示为Intel汇编。如果又想回到AT&T汇编,那么可以键入“set disassembly-flavor att”,设置为AT&T汇编。

yjf_victor 发表于 2012-03-24 23:41

机器语言对照AT&T汇编


机器语言对照Intel汇编

帅绝人寰 发表于 2012-04-01 11:52

teawater_cu 发表于 2010-12-06 23:56 static/image/common/back.gif
/r 的PATCH不是我写的么?


    你是──"两个redhat的大牛,一个google大牛,一个ibm大牛,一个cs大牛"啊 :luya:

deposit 发表于 2012-08-18 17:55

/r 这个选项应该很容易实现的,因为disassemble是通过bfd来实现对二进制文件读取的,能把汇编输出,那他肯定是知道对应的二进制文件内容的
页: 1 [2]
查看完整版本: 让gdb像objdump一样反汇编,显示对应的机器码列,该如何做?