WEB开发网
开发学院软件开发VC VC++语言中函数和类函数调用过程 阅读

VC++语言中函数和类函数调用过程

 2010-06-15 20:39:57 来源:WEB开发网   
核心提示:d. 如果是类调用方法与之一样,区别是 ECX -> 指向对象,VC++语言中函数和类函数调用过程(2),具体如下所示void XXX::SetValue(LONG f_Val){ecx -> XXX对象f_Val 获取方式为 mov eax, [ebp + 8]}a.SetValue(xxx); 调用方式

d. 如果是类调用方法与之一样,区别是 ECX -> 指向对象,具体如下所示

void XXX::SetValue(LONG f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 mov eax, [ebp + 8]
}

a.SetValue(xxx); 调用方式为

push xxx
mov ecx,a
call XXX::SetValue
void XXX::SetValue(std::string f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 lea eax, [ebp + 8]
}

a.SetValue(xxx);的调用方式为

esp -> 生成xxx的临时对象 std::string

mov ecx,a
call XXX::SetValue
void XXX::SetValue(std::string &f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 mov eax, [ebp + 8]
}

a.SetValue(xxx);的调用方式为

lea eax, xxx
push eax
mov ecx,a
call XXX::SetValue

2.有返回值的函数调用方法同上,区别就在返回值的处理上

a. 参数为普通变量,即: int long ulong 和指针

LONG SetValue(LONG f_Val)
{
f_Val 获取方式为 mov eax, [ebp + 8]
}

b = SetValue(xxx); 的调用方式为

push xxx
call SetValue
mov b, eax

b. 参数为类对象,如:CString

std::string SetValue(std::string f_Val)
{
f_Val 获取方式为 lea eax, [ebp + 8]
}

b = SetValue(xxx); 的调用方式为

esp -> 生成xxx的临时对象 std::string

lea eax, b
push eax
call SetValue

c. 如果参数以引用方式调用

std::string SetValue(std::string &f_Val)
{
f_Val 获取方式为 mov eax, [ebp + 8]
}

b = SetValue(xxx); 的调用方式为

lea eax, xxx
push eax
lea eax, b
push eax
call SetValue

d. 如果是类调用方法与之一样,区别是 ECX -> 指向对象,具体如下所示

LONG XXX::SetValue(LONG f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 mov eax, [ebp + 8]
}

b = a.SetValue(xxx) 调用方式为

push xxx
mov ecx,a
call XXX::SetValue
mov b, eax
std::string XXX::SetValue(std::string f_Val)
{
ecx -> XXX对象
f_Val 获取方式为 lea eax, [ebp + 8]
}

b = a.SetValue(xxx)的调用方式为

esp -> 生成xxx的临时对象 std::string

lea eax, b
push eax
mov ecx,a
call XXX::SetValue
std::string XXX::SetValue(std::string &f_Val)
{
ecx -> XXX对象f_Val 获取方式为 mov eax, [ebp + 8]
}

b = a.SetValue(xxx)的调用方式为

lea eax, xx
push eax
lea eax, b
push eax
mov ecx,a
call XXX::SetValue

上一页  1 2 

Tags:VC 函数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接