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