了解反汇编器:查看add使用了多少字节

问题描述 投票:0回答:1

我拆解了一个程序(使用

objdump -d a.out
),现在我想了解一行中的不同部分是什么样的

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

代表。更具体地说,我想知道如何查看添加两个寄存器使用了多少字节。我的想法是

0x8
中的
add $0x8,%rsp
(十进制为 8)给我 2 * 4,因此 2 个字节用于添加 2 个寄存器。这是正确的吗?

PS:编译器是gcc,操作系统是suse linux

assembly gcc disassembly att
1个回答
1
投票

在第二列中您会看到

48 83 c4 08
。每个两位数的十六进制数代表一个字节,因此字节数为 4。最后一个
08
$0x8
相关,其他三个字节是“向 RSP 添加 8 位常量”的机器代码(对于迂腐的编辑器:Intel 将其寄存器写入大写)。解构机器代码是相当困难的,但你的假设是完全错误的。

© www.soinside.com 2019 - 2024. All rights reserved.