当前位置: 代码迷 >> 汇编语言 >> win32 汇编调用函数时的疑义
  详细解决方案

win32 汇编调用函数时的疑义

热度:311   发布时间:2016-05-02 04:36:23.0
win32 汇编调用函数时的疑问?
win32函数调用时,先跳转到一个全部时函数的位置,那地方全是一个个函数列表。 执行的操作是跳转到真正的函数执行体。

想知道这个位置是个啥!
------解决方案--------------------
函数指针存放的表  可以这样理解么?
------解决方案--------------------
"那地方全是一个个函数列表"   ,调用 函数,先要 声明,     数个函数的声明集合,组合一个inc的文件

TITLE Add and Subtract (AddSub.asm)  
; This program adds and subtracts 32-bit integers.  
; Last update: 2/1/02  
INCLUDE Irvine32.inc  ;<-------    DumpRegs PROTO ; display register dump     // 在Irvine32.inc 里声明滴。

Includelib Kernel32.lib    ;<------- 添加 
Includelib Irvine32.lib    ;<------- 添加 
.code  
main PROC  
 mov eax,10000h ; EAX = 10000h  
 add eax,40000h ; EAX = 50000h  
 sub eax,20000h ; EAX = 30000h  
 call DumpRegs    ;  / 在Irvine32.inc 里 声明滴。
 exit  
main ENDP  
END main  


PE 结构 我没看过,所以我就先这么理解的:
“ 那地方全是一个个函数列表。”       这个位置 我估计就是 加载Irvine32.inc 文件后, 指向 声明的函数的 实际地址。
------解决方案--------------------
同一模块里的,其实不是必须这样做的,也可以直接就到目的地,还省了一个指令。这样做的目的,连写那个很是有名的“Windows 程序设计大奥秘”的侯捷好像也是感到莫名;有些版本不是这么做的,我用 vc2008 没有特殊选项出来的就没有这个中间的 jmp 指令;或许是新版的针对函数的全面重新 hook 来的,好像 win7 里总是这样?
  相关解决方案