📄 testasmstructs.obs
字号:
unit testasmstructs;interface implementation uses activex;const atvarmask=$3F;attypemask
=$7F;atbyref=$80;procedure foo(calldesc:pcalldesc;namedargdispids,result:pointer)
;var dispparams:tdispparams;asm
and eax,not 3
@resulttable:
mov ebx,calldesc
movzx ecx,[ebx].tcalldesc.argcount
mov dispparams.cargs,ecx
add ebx,offset tcalldesc.argtypes
@@1:movzx eax,[ebx].byte
jne @@1
cmp al,varvariant
push[esi].integer[4]
@@2:push[esi].integer[12]
@@3:and al,attypemask
or eax,varbyref
@@10:mov dispparams.rgvarg,esp
movzx eax,[ebx].tcalldesc.namedargcount
mov dispparams.cnamedargs,eax
mov esi,namedargdispids
@@12:movzx ecx,[ebx].tcalldesc.calltype
cmp ecx,dispatch_propertyput
cmp[ebx].tcalldesc.argtypes.byte[0],vardispatch
@@20:mov dispparams.rgdispidnamedargs,esp
call[eax].pointer[24]
mov ecx,[ebp+4]
jmp foo
mov result,false
mov result,'F'
end;end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -