4

此代码部分中的哪些功能又大?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
4

1 回答 1

4

短的

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)。但是,并没有真正添加任何新信息,该行仅表示并且可能是您从其他反汇编程序获得的反汇编。largepop dword ptr [fs]


当您阅读反汇编代码时,您可以放心地忽略这两个关键字,并且在编写您自己的汇编代码时它们当然不是必需的。

于 2012-12-29T22:17:21.220 回答