|
@@ -91,6 +91,8 @@ type
|
|
{$endif aarch64}
|
|
{$endif aarch64}
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ TInstruction = class;
|
|
|
|
+
|
|
TOperand = class
|
|
TOperand = class
|
|
opr : TOprRec;
|
|
opr : TOprRec;
|
|
typesize : byte;
|
|
typesize : byte;
|
|
@@ -109,7 +111,7 @@ type
|
|
Function SetupSelf:boolean;
|
|
Function SetupSelf:boolean;
|
|
Function SetupOldEBP:boolean;
|
|
Function SetupOldEBP:boolean;
|
|
Function SetupVar(const s:string;GetOffset : boolean): Boolean;
|
|
Function SetupVar(const s:string;GetOffset : boolean): Boolean;
|
|
- Function CheckOperand: boolean; virtual;
|
|
|
|
|
|
+ function CheckOperand(ins : TInstruction): boolean; virtual;
|
|
Procedure InitRef;
|
|
Procedure InitRef;
|
|
Procedure InitRefConvertLocal;
|
|
Procedure InitRefConvertLocal;
|
|
protected
|
|
protected
|
|
@@ -1229,7 +1231,7 @@ begin
|
|
Fillchar(opr.ref,sizeof(treference),0);
|
|
Fillchar(opr.ref,sizeof(treference),0);
|
|
end;
|
|
end;
|
|
|
|
|
|
-Function TOperand.CheckOperand: boolean;
|
|
|
|
|
|
+Function TOperand.CheckOperand(ins : TInstruction): boolean;
|
|
{*********************************************************************}
|
|
{*********************************************************************}
|
|
{ Description: This routine checks if the operand is of }
|
|
{ Description: This routine checks if the operand is of }
|
|
{ valid, and returns false if it isn't. Does nothing by default. }
|
|
{ valid, and returns false if it isn't. Does nothing by default. }
|
|
@@ -1274,7 +1276,7 @@ end;
|
|
i : longint;
|
|
i : longint;
|
|
begin
|
|
begin
|
|
for i:=1 to Ops do
|
|
for i:=1 to Ops do
|
|
- operands[i].CheckOperand;
|
|
|
|
|
|
+ operands[i].CheckOperand(self);
|
|
|
|
|
|
ai:=taicpu.op_none(opcode);
|
|
ai:=taicpu.op_none(opcode);
|
|
ai.fileinfo:=filepos;
|
|
ai.fileinfo:=filepos;
|