mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 16:19:21 +02:00
+ implemented tcgz80.a_jmp_cond
git-svn-id: branches/z80@44997 -
This commit is contained in:
parent
39574ac70e
commit
0b3b8401df
@ -2256,75 +2256,31 @@ unit cgcpu;
|
|||||||
|
|
||||||
|
|
||||||
procedure tcgz80.a_jmp_cond(list : TAsmList;cond : TOpCmp;l: tasmlabel);
|
procedure tcgz80.a_jmp_cond(list : TAsmList;cond : TOpCmp;l: tasmlabel);
|
||||||
var
|
|
||||||
ai1,ai2 : taicpu;
|
|
||||||
hl : TAsmLabel;
|
|
||||||
begin
|
begin
|
||||||
list.Concat(tai_comment.Create(strpnew('WARNING! not implemented: a_jmp_cond')));
|
case cond of
|
||||||
//ai1:=Taicpu.Op_sym(A_BRxx,l);
|
OC_EQ:
|
||||||
//ai1.is_jmp:=true;
|
a_jmp_unsigned_cmp_3way(list,nil,l,nil);
|
||||||
//hl:=nil;
|
OC_NE:
|
||||||
//case cond of
|
a_jmp_unsigned_cmp_3way(list,l,nil,l);
|
||||||
// OC_EQ:
|
OC_A:
|
||||||
// ai1.SetCondition(C_EQ);
|
a_jmp_unsigned_cmp_3way(list,nil,nil,l);
|
||||||
// OC_GT:
|
OC_B:
|
||||||
// begin
|
a_jmp_unsigned_cmp_3way(list,l,nil,nil);
|
||||||
// { emulate GT }
|
OC_AE:
|
||||||
// current_asmdata.getjumplabel(hl);
|
a_jmp_unsigned_cmp_3way(list,nil,l,l);
|
||||||
// ai2:=Taicpu.Op_Sym(A_BRxx,hl);
|
OC_BE:
|
||||||
// ai2.SetCondition(C_EQ);
|
a_jmp_unsigned_cmp_3way(list,l,l,nil);
|
||||||
// ai2.is_jmp:=true;
|
OC_GT:
|
||||||
// list.concat(ai2);
|
a_jmp_signed_cmp_3way(list,nil,nil,l);
|
||||||
//
|
OC_LT:
|
||||||
// ai1.SetCondition(C_GE);
|
a_jmp_signed_cmp_3way(list,l,nil,nil);
|
||||||
// end;
|
OC_GTE:
|
||||||
// OC_LT:
|
a_jmp_signed_cmp_3way(list,nil,l,l);
|
||||||
// ai1.SetCondition(C_LT);
|
OC_LTE:
|
||||||
// OC_GTE:
|
a_jmp_signed_cmp_3way(list,l,l,nil);
|
||||||
// ai1.SetCondition(C_GE);
|
else
|
||||||
// OC_LTE:
|
internalerror(2011082501);
|
||||||
// begin
|
end;
|
||||||
// { emulate LTE }
|
|
||||||
// ai2:=Taicpu.Op_Sym(A_BRxx,l);
|
|
||||||
// ai2.SetCondition(C_EQ);
|
|
||||||
// ai2.is_jmp:=true;
|
|
||||||
// list.concat(ai2);
|
|
||||||
//
|
|
||||||
// ai1.SetCondition(C_LT);
|
|
||||||
// end;
|
|
||||||
// OC_NE:
|
|
||||||
// ai1.SetCondition(C_NE);
|
|
||||||
// OC_BE:
|
|
||||||
// begin
|
|
||||||
// { emulate BE }
|
|
||||||
// ai2:=Taicpu.Op_Sym(A_BRxx,l);
|
|
||||||
// ai2.SetCondition(C_EQ);
|
|
||||||
// ai2.is_jmp:=true;
|
|
||||||
// list.concat(ai2);
|
|
||||||
//
|
|
||||||
// ai1.SetCondition(C_LO);
|
|
||||||
// end;
|
|
||||||
// OC_B:
|
|
||||||
// ai1.SetCondition(C_LO);
|
|
||||||
// OC_AE:
|
|
||||||
// ai1.SetCondition(C_SH);
|
|
||||||
// OC_A:
|
|
||||||
// begin
|
|
||||||
// { emulate A (unsigned GT) }
|
|
||||||
// current_asmdata.getjumplabel(hl);
|
|
||||||
// ai2:=Taicpu.Op_Sym(A_BRxx,hl);
|
|
||||||
// ai2.SetCondition(C_EQ);
|
|
||||||
// ai2.is_jmp:=true;
|
|
||||||
// list.concat(ai2);
|
|
||||||
//
|
|
||||||
// ai1.SetCondition(C_SH);
|
|
||||||
// end;
|
|
||||||
// else
|
|
||||||
// internalerror(2011082501);
|
|
||||||
//end;
|
|
||||||
//list.concat(ai1);
|
|
||||||
//if assigned(hl) then
|
|
||||||
// a_label(list,hl);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user