⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testasmstructs.out

📁 格式化源码的最新板
💻 OUT
字号:
unit TestAsmStructs;

{ AFS 5 Feb 2K

  This code compiles, but is not semantically meaningfull.
  It is test cases for the code-formating utility
  SOme difficult bits of ASM from ComObj.pas
}
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 + -