testasmstructs.out
来自「格式化源码的最新板」· OUT 代码 · 共 53 行
OUT
53 行
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 + -
显示快捷键?