汇编指令中冒号 (:) 的未知含义
Unknown meaning of colon ( : ) in assembly instruction
我正在使用反汇编程序(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
这是内存操作数的大小,无论出于何种原因打印。我从 example on the SmartDec home page 中推导出它,读作 movzx edx, [ecx]:16
因此这等同于其他汇编程序(或 word ptr
)中的 movzx edx, word [ecx]
。它仅在无法从其他操作数推导出大小时才有用,如 movzx
的情况。 SmartDec
似乎每次都显示它,例如对于问题中的示例,mov rax, [rip + 0x32b5]:64
很明显大小是 64 位,所以它没有多大帮助。
我正在使用反汇编程序(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
这是内存操作数的大小,无论出于何种原因打印。我从 example on the SmartDec home page 中推导出它,读作 movzx edx, [ecx]:16
因此这等同于其他汇编程序(或 word ptr
)中的 movzx edx, word [ecx]
。它仅在无法从其他操作数推导出大小时才有用,如 movzx
的情况。 SmartDec
似乎每次都显示它,例如对于问题中的示例,mov rax, [rip + 0x32b5]:64
很明显大小是 64 位,所以它没有多大帮助。