此代码部分中的哪些功能又短又大?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
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
是远指针:常规偏移量 ( 0
) 但带有段选择器 ( fs
)。即与数据的宽度(dword)large
无关,而是地址(segment+offset)。但是,并没有真正添加任何新信息,该行仅表示并且可能是您从其他反汇编程序获得的反汇编。large
pop dword ptr [fs]
当您阅读反汇编代码时,您可以放心地忽略这两个关键字,并且在编写您自己的汇编代码时它们当然不是必需的。