此代码部分中有哪些函数 short 和 large ? large与 long dword 相同?
mov eax, ebx
cmp [ebp+var_1], 0
jz short loc_413123
call sub_40341C
pop large dword ptr fs:0
add esp, 0Ch
答案 0 :(得分:3)
jz short loc_413123
仅仅意味着此跳转的偏移量(即距离)非常小,以至于它适合单个字节,因此此跳转已编译为两个简单的字节:
0x74 [1-byte-offset]
如果距离较大,编译器必须以不同方式对跳转进行编码,这将占用更多内存:
0x0f 0x84 [4-byte-offset]
使用short
,IDA Pro只是告诉您此跳转使用的编码类型。
pop large dword ptr fs:0
IDA提醒您注意fs:0
是far pointer:常规偏移(0
),但有一个段选择器fs
})。即large
与数据(dword)的宽度无关,但与地址(段+偏移)无关。但是,large
并没有真正添加任何新信息,该行仅仅意味着pop dword ptr [fs]
,这可能是您从其他反汇编程序获得的反汇编。
在阅读反汇编时,您可以放心地忽略这两个关键字,在编写自己的汇编代码时,这些关键字当然不是必需的。