取得方式
mov esi, offset $ObjTmpl(XXX)
main.asm
%include @Environ(OBJASM_PATH)\Code\Macros\Model.inc SysSetup OOP, WIN32, ANSI_STRING MakeObjects Primer .const Object Base, , Primer VirtualMethod Print ObjectEnd Object Child, , Base RedefineMethod Print ObjectEnd .code PrintMsg proc uses esi, szInfo : POINTER local r : DWORD local dwLen : DWORD mov dwLen, $invoke(strlen, szInfo) invoke GetStdHandle, STD_OUTPUT_HANDLE mov esi, eax invoke WriteConsole, esi, szInfo, dwLen, addr r, NULL ret PrintMsg endp Method Base.Print jmp @f szBaseInfo db "Base Class",10,0 @@: invoke PrintMsg, addr szBaseInfo MethodEnd Method Child.Print jmp @f szChildInfo db "Child Class",10,0 @@: invoke PrintMsg, addr szChildInfo MethodEnd start proc SysInit mov esi, offset $ObjTmpl(Base) OCall esi::Base.Print mov esi, offset $ObjTmpl(Child) OCall esi::Child.Print mov esi, offset $ObjTmpl(Child) OCall esi::Base.Print SysDone invoke ExitProcess, 0 start endp end
P.S. Link:c:\objasm\Code\Lib\32\Windows\msvcrt.lib
結果
Base Class Child Class Child Class