汇编指令中冒号(:)的未知含义

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

我正在使用反汇编程序(SmartDec:http://decompilation.info/),生成的反汇编中的许多指令看起来与此类似:

mov rax, [rip + 0x32b5]:64

我不熟悉这条指令的:64部分。这是什么意思?

其他例子:

cmp [rcx + r8 * 0x8]:64, 0x0
mov eax, [rip + 0x592a]:32
jmp [rip + 0x6bad]:64

这个反汇编程序没有显示相应的机器代码,因此我使用了一个十六进制编辑器并查找了它说该指令所在的地址:

1665:   mov rax, [rip + 0x19a4]:64

这就是Little Endian中有16个字节的内容:

54 00 00 49 89 E8 FF 15 DC 5F 00 00 E9 57 FF FF
assembly x86 x86-64 disassembly
1个回答
8
投票

这是内存操作数的大小,无论出于何种原因打印。我从example on the SmartDec home page中推断出它的内容为movzx edx, [ecx]:16因此,这与其他汇编程序(或movzx edx, word [ecx])中的word ptr相当。只有在不能从其他操作数推导出大小时才有用,就像在这个movzx情况下一样。 SmartDec似乎每次都会展示它,例如对于你在问题中的例子,mov rax, [rip + 0x32b5]:64显然大小是64位所以它没有多大帮助。

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