懂汇编的进来帮忙 ( 积分: 50 )

  • 主题发起人 主题发起人 太阳河上
  • 开始时间 开始时间

太阳河上

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个汇编,结果是什么:
在一个函数中,插入以下汇编,
asm
mov eax,[ebp]
mov callerBP,eax
end;
其它delphi代码
asm
mov eax,Index
mov edx,Item
push CallerBP
call ApplyFunction//这个函数返回Integer
pop ecx
mov @Result,eax
end;

第一次调用ApplyFunction时正常,第二次调这个时不正常了
我想知道:经过汇编后,出来的结果是什么?
 
有两个汇编,结果是什么:
在一个函数中,插入以下汇编,
asm
mov eax,[ebp]
mov callerBP,eax
end;
其它delphi代码
asm
mov eax,Index
mov edx,Item
push CallerBP
call ApplyFunction//这个函数返回Integer
pop ecx
mov @Result,eax
end;

第一次调用ApplyFunction时正常,第二次调这个时不正常了
我想知道:经过汇编后,出来的结果是什么?
 
调用下面一段汇编程序后,其执行结果依次是
index变量值赋给eax
item变量值赋给edx
将callerbp入栈
调用applyfunction函数
将callerbp出栈,并将其值赋给ecx
然后将eax中值集index变量值赋给result变量值所在的存储单元(外部存储区)
(如果applyfunction函数没有改变eax值的话)
 
nongshui286:
我想再问一下:
1。ApplyFunction有两个有参数(Index:Integer;Item: TObject)
在call ApplyFunction时,传递的是
mov eax,Index
mov edx,Item 吗?
2。ApplyFunction返回值是给ecx
还是给@Result
 
第一个参数由EAX传递,第二个参数由EDX传递,第三个参数由ECX传递,第四个及以上由
堆栈传递,这是Delphi的默认register函数调用方式。
ApplyFunction返回值给EAX。
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
818
import
I
I
回复
0
查看
662
import
I
I
回复
0
查看
709
import
I
I
回复
0
查看
548
import
I
I
回复
0
查看
724
import
I
后退
顶部