* fixed typo with and/or type check

This commit is contained in:
peter 1999-04-20 10:32:39 +00:00
parent 749c615411
commit 2c62da11c8

View File

@ -373,13 +373,13 @@ Begin
Else Else
{change "imul $1, reg1, reg2" to "mov reg1, reg2"} {change "imul $1, reg1, reg2" to "mov reg1, reg2"}
Begin Begin
{$IfNDef NO_OP3} {$IfDef USE_OP3}
hp1 := New(Pai386, Op_Reg_Reg(A_MOV, S_L, TRegister(Pai386(p)^.op2), hp1 := New(Pai386, Op_Reg_Reg(A_MOV, S_L, TRegister(Pai386(p)^.op2),
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
hp1 := New(Pai386, Op_Reg_Reg(A_MOV, S_L, TRegister(TwoWords(Pai386(p)^.op2).Word1), hp1 := New(Pai386, Op_Reg_Reg(A_MOV, S_L, TRegister(TwoWords(Pai386(p)^.op2).Word1),
TRegister(TwoWords(Pai386(p)^.op2).Word2))); TRegister(TwoWords(Pai386(p)^.op2).Word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
hp1^.fileinfo := p^.fileinfo; hp1^.fileinfo := p^.fileinfo;
InsertLLItem(AsmL, p^.previous, p^.next, hp1); InsertLLItem(AsmL, p^.previous, p^.next, hp1);
Dispose(p, Done); Dispose(p, Done);
@ -406,22 +406,22 @@ Begin
lea (reg1,reg1,2), reg2 lea (reg1,reg1,2), reg2
imul 3, reg1 to imul 3, reg1 to
lea (reg1,reg1,2), reg1} lea (reg1,reg1,2), reg1}
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.base := TRegister(Pai386(p)^.op2); TmpRef^.base := TRegister(Pai386(p)^.op2);
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1);
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
TmpRef^.ScaleFactor := 2; TmpRef^.ScaleFactor := 2;
If (Pai386(p)^.op3t = Top_None) If (Pai386(p)^.op3t = Top_None)
Then hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, TRegister(Pai386(p)^.op2))) Then hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, TRegister(Pai386(p)^.op2)))
Else hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, Else hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))); TRegister(twowords(Pai386(p)^.op2).word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
hp1^.fileinfo := p^.fileinfo; hp1^.fileinfo := p^.fileinfo;
InsertLLItem(AsmL,p^.previous, p^.next, hp1); InsertLLItem(AsmL,p^.previous, p^.next, hp1);
Dispose(p, Done); Dispose(p, Done);
@ -432,22 +432,22 @@ Begin
lea (reg1,reg1,4), reg2 lea (reg1,reg1,4), reg2
imul 5, reg1 to imul 5, reg1 to
lea (reg1,reg1,4), reg1} lea (reg1,reg1,4), reg1}
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.base := TRegister(Pai386(p)^.op2); TmpRef^.base := TRegister(Pai386(p)^.op2);
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1);
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
TmpRef^.ScaleFactor := 4; TmpRef^.ScaleFactor := 4;
If (Pai386(p)^.op3t = Top_None) If (Pai386(p)^.op3t = Top_None)
Then hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, TRegister(Pai386(p)^.op2))) Then hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, TRegister(Pai386(p)^.op2)))
Else hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, Else hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))); TRegister(twowords(Pai386(p)^.op2).word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
hp1^.fileinfo:= p^.fileinfo; hp1^.fileinfo:= p^.fileinfo;
InsertLLItem(AsmL,p^.previous, p^.next, hp1); InsertLLItem(AsmL,p^.previous, p^.next, hp1);
Dispose(p, Done); Dispose(p, Done);
@ -463,26 +463,26 @@ Begin
If (aktoptprocessor <= Class386) If (aktoptprocessor <= Class386)
Then Then
Begin Begin
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
If (Pai386(p)^.op3t = Top_Reg) If (Pai386(p)^.op3t = Top_Reg)
Then Then
Begin Begin
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.base := TRegister(Pai386(p)^.op3); TmpRef^.base := TRegister(Pai386(p)^.op3);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).word2); TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).word2);
{$EndIf NO_OP3} {$EndIf USE_OP3}
TmpRef^.ScaleFactor := 4; TmpRef^.ScaleFactor := 4;
hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))); TRegister(twowords(Pai386(p)^.op2).word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
End End
Else Else
Begin Begin
@ -494,22 +494,22 @@ Begin
InsertLLItem(AsmL,p, p^.next, hp1); InsertLLItem(AsmL,p, p^.next, hp1);
New(TmpRef); New(TmpRef);
Reset_reference(TmpRef^); Reset_reference(TmpRef^);
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
TmpRef^.ScaleFactor := 2; TmpRef^.ScaleFactor := 2;
If (Pai386(p)^.op3t = Top_Reg) If (Pai386(p)^.op3t = Top_Reg)
Then Then
Begin Begin
TmpRef^.base := R_NO; TmpRef^.base := R_NO;
hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))); TRegister(twowords(Pai386(p)^.op2).word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
End End
Else Else
Begin Begin
@ -528,22 +528,22 @@ Begin
lea (reg1,reg1,8), reg2 lea (reg1,reg1,8), reg2
imul 9, reg1 to imul 9, reg1 to
lea (reg1,reg1,8), reg1} lea (reg1,reg1,8), reg1}
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.base := TRegister(Pai386(p)^.op2); TmpRef^.base := TRegister(Pai386(p)^.op2);
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1);
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
TmpRef^.ScaleFactor := 8; TmpRef^.ScaleFactor := 8;
If (Pai386(p)^.op3t = Top_None) If (Pai386(p)^.op3t = Top_None)
Then hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, TRegister(Pai386(p)^.op2))) Then hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, TRegister(Pai386(p)^.op2)))
Else hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, Else hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))); TRegister(twowords(Pai386(p)^.op2).word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
hp1^.fileinfo := p^.fileinfo; hp1^.fileinfo := p^.fileinfo;
InsertLLItem(AsmL,p^.previous, p^.next, hp1); InsertLLItem(AsmL,p^.previous, p^.next, hp1);
Dispose(p, Done); Dispose(p, Done);
@ -561,33 +561,33 @@ Begin
If (Pai386(p)^.op3t = Top_Reg) If (Pai386(p)^.op3t = Top_Reg)
Then Then
hp1 := New(Pai386, op_reg_reg(A_ADD, S_L, hp1 := New(Pai386, op_reg_reg(A_ADD, S_L,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
Tregister(Pai386(p)^.op3), Tregister(Pai386(p)^.op3),
Tregister(Pai386(p)^.op3))) Tregister(Pai386(p)^.op3)))
{$Else NO_OP3} {$Else USE_OP3}
Tregister(twowords(Pai386(p)^.op2).word2), Tregister(twowords(Pai386(p)^.op2).word2),
Tregister(twowords(Pai386(p)^.op2).word2))) Tregister(twowords(Pai386(p)^.op2).word2)))
{$EndIf NO_OP3} {$EndIf USE_OP3}
Else hp1 := New(Pai386, op_reg_reg(A_ADD, S_L, Else hp1 := New(Pai386, op_reg_reg(A_ADD, S_L,
TRegister(Pai386(p)^.op2), TRegister(Pai386(p)^.op2))); TRegister(Pai386(p)^.op2), TRegister(Pai386(p)^.op2)));
hp1^.fileinfo := p^.fileinfo; hp1^.fileinfo := p^.fileinfo;
InsertLLItem(AsmL,p, p^.next, hp1); InsertLLItem(AsmL,p, p^.next, hp1);
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.base := TRegister(Pai386(p)^.op2); TmpRef^.base := TRegister(Pai386(p)^.op2);
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).Word1);
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
TmpRef^.ScaleFactor := 4; TmpRef^.ScaleFactor := 4;
If (Pai386(p)^.op3t = Top_Reg) If (Pai386(p)^.op3t = Top_Reg)
Then Then
hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))) TRegister(Pai386(p)^.op3)))
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))) TRegister(twowords(Pai386(p)^.op2).word2)))
{$EndIf NO_OP3} {$EndIf USE_OP3}
Else Else
hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
TRegister(Pai386(p)^.op2))); TRegister(Pai386(p)^.op2)));
@ -608,26 +608,26 @@ Begin
If (aktoptprocessor <= Class386) If (aktoptprocessor <= Class386)
Then Then
Begin Begin
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
If (Pai386(p)^.op3t = Top_Reg) If (Pai386(p)^.op3t = Top_Reg)
Then Then
Begin Begin
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.base := TRegister(Pai386(p)^.op3); TmpRef^.base := TRegister(Pai386(p)^.op3);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).word2); TmpRef^.base := TRegister(twowords(Pai386(p)^.op2).word2);
{$EndIf NO_OP3} {$EndIf USE_OP3}
TmpRef^.ScaleFactor := 8; TmpRef^.ScaleFactor := 8;
hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))); TRegister(twowords(Pai386(p)^.op2).word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
End End
Else Else
Begin Begin
@ -640,22 +640,22 @@ Begin
InsertLLItem(AsmL,p, p^.next, hp1); InsertLLItem(AsmL,p, p^.next, hp1);
New(TmpRef); New(TmpRef);
Reset_reference(TmpRef^); Reset_reference(TmpRef^);
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TmpRef^.Index := TRegister(Pai386(p)^.op2); TmpRef^.Index := TRegister(Pai386(p)^.op2);
{$Else NO_OP3} {$Else USE_OP3}
TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1); TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
{$EndIf NO_OP3} {$EndIf USE_OP3}
If (Pai386(p)^.op3t = Top_Reg) If (Pai386(p)^.op3t = Top_Reg)
Then Then
Begin Begin
TmpRef^.base := R_NO; TmpRef^.base := R_NO;
TmpRef^.ScaleFactor := 4; TmpRef^.ScaleFactor := 4;
hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef, hp1 := New(Pai386, op_ref_reg(A_LEA, S_L, TmpRef,
{$IfNDef NO_OP3} {$IfDef USE_OP3}
TRegister(Pai386(p)^.op3))); TRegister(Pai386(p)^.op3)));
{$Else NO_OP3} {$Else USE_OP3}
TRegister(twowords(Pai386(p)^.op2).word2))); TRegister(twowords(Pai386(p)^.op2).word2)));
{$EndIf NO_OP3} {$EndIf USE_OP3}
End End
Else Else
Begin Begin
@ -1508,7 +1508,7 @@ Begin
A_ADD, A_SUB, A_OR, A_XOR, A_AND, A_SHL, A_SHR: A_ADD, A_SUB, A_OR, A_XOR, A_AND, A_SHL, A_SHR:
Begin Begin
If (Pai386(hp1)^.op2 = Pai386(p)^.op1) and If (Pai386(hp1)^.op2 = Pai386(p)^.op1) and
(Pai386(hp1)^.op1t = pai386(p)^.op1t) Then (Pai386(hp1)^.op2t = pai386(p)^.op1t) Then
Begin Begin
hp1 := pai(p^.next); hp1 := pai(p^.next);
asml^.remove(p); asml^.remove(p);
@ -1677,9 +1677,8 @@ End.
{ {
$Log$ $Log$
Revision 1.44 1999-04-17 22:17:01 pierre Revision 1.45 1999-04-20 10:32:39 peter
* ifdef USE_OP3 released (changed into ifndef NO_OP3) * fixed typo with and/or type check
* SHRD and SHLD first operand (ATT syntax) can only be CL reg or immediate const
Revision 1.43 1999/04/16 15:16:29 jonas Revision 1.43 1999/04/16 15:16:29 jonas
* changes to work with -dUSE_OP3 * changes to work with -dUSE_OP3