DLL中调用约定和名称修饰(二)[4]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 rivershan 的 blog

pop           edi

pop          esi

pop           ebx

mov          esp,ebp

pop           ebp

ret           8                                 ;清栈

5naked属性

采用上面所述的四种调用约定的函数在进入函数时,编译器会产生代码来保存esiediebxebp寄存器中的值,退出函数时则产生代码恢复这些寄存器的内容。对于定义了naked属性的函数,编译器不会自动产生这样的代码,需要你手工使用内嵌汇编来控制函数实现中的堆栈管理。由于naked属性并不是类型修饰符,故必须和__declspec共同使用。下面的这段代码定义了一个使用了naked属性的函数及其实现:

 

__declspec ( naked ) func()

{

int i;

本文关键:DLL、调用约定、名称修饰、Calling Convention、Name Decoration、Name Mangling
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top