了解反汇编程序:查看用于添加的字节数

时间:2014-05-20 16:03:47

标签: gcc assembly compiler-construction disassembly att

我反汇编了一个程序(objdump -d a.out),现在我想了解一行中的不同部分是什么

400586:       48 83 c4 08             add    $0x8,%rsp

代表。更具体地说,我想知道如何看到用于添加两个寄存器的字节数。我的想法是0x8中的add $0x8,%rsp,即十进制的8,给我2 * 4,所以2个字节用于添加2个寄存器。这是对的吗?

PS:编译器是gcc,OS是suse linux

1 个答案:

答案 0 :(得分:1)

在第二列中,您会看到48 83 c4 08。每两位十六进制数表示一个字节,因此字节数为四。最后一个08$0x8相关,其他三个字节是&#34的机器代码;向RSP"添加一个8位常数。 (对于迂腐的编辑:英特尔将其寄存器写成大写)。解构机器代码非常困难,但你的假设是完全错误的。