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 + -
显示快捷键?