testasmstructs.obs
来自「格式化源码的最新板」· OBS 代码 · 共 30 行
OBS
30 行
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 + =
减小字号Ctrl + -
显示快捷键?