0

如何查看某些汇编程序命令的十六进制表示?

这是来自 gdb:

0x8048395 <simple+1>            mov    %esp,%ebp
0x8048397 <simple+3>            mov    $0x1,%eax
0x804839c <simple+8>            pop    %ebp                               
0x804839d <simple+9>            ret

“simple”是这个程序的c函数。我试过

dump ihex value dump.hex simple

这导致

:020000040804EE
:0183940000E8
:00000001FF

dump ihex memory dump.hex 0x8048394 0x804839d

这导致了一些不同的事情

:020000040804EE
:098394005589E5B8010000005D07
:00000001FF

为什么它们不同?其中之一是正确的吗?

4

1 回答 1

4

要查看实际字节,您可以简单地使用:

disas /r simple

如果你想将文件转储到原始二进制文件

dump binary memory file.bin 0x8048394 0x804839d

ihex格式是Intel Hex 格式,并不像看起来那么简单。

此外,当您使用时,dump value您正在转储函数地址的值,而不是函数本身的代码。这就是dump memory.

UPDATE: Actually, when you do dump <format> value dump.hex simple, it dumps the content of simple, but not knowing how to dump a function value, it dumps it as if it were a char value, that is, it dumps the first byte of the function. If you want to dump the address of the function, just do: dump <format> value dump.hex &simple.

于 2012-06-24T18:13:43.487 回答