在这个代码部分中有哪些函数有短的和大的?大同长剑?
mov eax, ebx
cmp [ebp+var_1], 0
jz short loc_413123
call sub_40341C
pop large dword ptr fs:0
add esp, 0Ch发布于 2012-12-29 22:17:21
短的
jz short loc_413123仅仅意味着这个跳转的偏移量(即距离)非常小,适合于一个字节,所以这个跳转被编译成两个简单的字节:
0x74 [1-byte-offset]如果距离更大,编译器将不得不对跳转进行不同的编码,这将占用更多的内存:
0x0f 0x84 [4-byte-offset]使用short,IDA只是简单地告诉您这个跳转使用的是哪种编码。
大型
pop large dword ptr fs:0是IDA提请您注意的一种方法,fs:0是一个远指针:一个常规偏移量(0),但是有一个段选择器(fs)。也就是说,large与数据的宽度(dword)无关,而是与地址(segment+offset)有关。然而,large并没有真正添加任何新的信息,这一行仅仅意味着pop dword ptr [fs],这可能是从不同反汇编程序获得的反汇编。
在读取反汇编时,您可以安全地忽略这两个关键字,而且在编写自己的程序集代码时,它们当然是不必要的。
https://stackoverflow.com/questions/14061439
复制相似问题