如何理解Dispatch的汇编代码?(50分)

  • 主题发起人 主题发起人 mattus_zhao
  • 开始时间 开始时间
M

mattus_zhao

Unregistered / Unconfirmed
GUEST, unregistred user!
[green][/green]下面是TObject.Dispatch的汇编代码,如何理解,视答案给分。
procedure TObject.Dispatch(var Message);
asm
PUSH ESI
MOV SI,[EDX]
OR SI,SI
JE @@default
CMP SI,0C000H
JAE @@default
PUSH EAX
MOV EAX,[EAX]
CALL GetDynaMethod
POP EAX
JE @@default
MOV ECX,ESI
POP ESI
JMP ECX

@@default:
POP ESI
MOV ECX,[EAX]
JMP dword ptr [ECX].vmtDefaultHandler
end;
 
32位汇编,看不懂[:(]
 
faint,我学的8086汇编,那时候根本没有什么ECX,EAX寄存器,看不懂.
大概的意思把指针指向最后代类(继承树最末端)的消息处理过程,
如果没有,就调用defaulthandler方法.就是所谓消息的派发.
 
后退
顶部