mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-04 18:09:37 +01:00
* some small m68k bugfixes
This commit is contained in:
parent
ce2b1f45ef
commit
3c97889b0f
@ -446,7 +446,7 @@ Implementation
|
|||||||
OP_AND,
|
OP_AND,
|
||||||
OP_OR:
|
OP_OR:
|
||||||
Begin
|
Begin
|
||||||
list.concat(taicpu.op_const_reg(topcg2tasmop[op],S_L,a, reg));
|
list.concat(taicpu.op_const_reg(topcg2tasmop[op],S_L,longint(a), reg));
|
||||||
end;
|
end;
|
||||||
OP_DIV :
|
OP_DIV :
|
||||||
Begin
|
Begin
|
||||||
@ -1014,7 +1014,9 @@ Implementation
|
|||||||
list.concat(taicpu.op_reg_sym(A_DBRA,S_L,hregister,hl));
|
list.concat(taicpu.op_reg_sym(A_DBRA,S_L,hregister,hl));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ restore the registers that we have just used olny if they are used! }
|
{ restore the registers that we have just used olny if they are used! }
|
||||||
|
free_scratch_reg(list, iregister);
|
||||||
|
free_scratch_reg(list, jregister);
|
||||||
if jregister.enum = R_A1 then
|
if jregister.enum = R_A1 then
|
||||||
hp2.base.enum := R_NO;
|
hp2.base.enum := R_NO;
|
||||||
if iregister.enum = R_A0 then
|
if iregister.enum = R_A0 then
|
||||||
@ -1335,7 +1337,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.16 2003-02-02 19:25:54 carl
|
Revision 1.17 2003-02-12 22:11:13 carl
|
||||||
|
* some small m68k bugfixes
|
||||||
|
|
||||||
|
Revision 1.16 2003/02/02 19:25:54 carl
|
||||||
* Several bugfixes for m68k target (register alloc., opcode emission)
|
* Several bugfixes for m68k target (register alloc., opcode emission)
|
||||||
+ VIS target
|
+ VIS target
|
||||||
+ Generic add more complete (still not verified)
|
+ Generic add more complete (still not verified)
|
||||||
|
|||||||
@ -101,7 +101,7 @@ type
|
|||||||
AS_SEPARATOR,AS_ID,AS_REGISTER,AS_OPCODE,AS_SLASH,AS_APPT,AS_REALNUM,
|
AS_SEPARATOR,AS_ID,AS_REGISTER,AS_OPCODE,AS_SLASH,AS_APPT,AS_REALNUM,
|
||||||
AS_ALIGN,
|
AS_ALIGN,
|
||||||
{------------------ Assembler directives --------------------}
|
{------------------ Assembler directives --------------------}
|
||||||
AS_DB,AS_DW,AS_DD,AS_END,
|
AS_DB,AS_DW,AS_DD,AS_XDEF,AS_END,
|
||||||
{------------------ Assembler Operators --------------------}
|
{------------------ Assembler Operators --------------------}
|
||||||
AS_MOD,AS_SHL,AS_SHR,AS_NOT,AS_AND,AS_OR,AS_XOR);
|
AS_MOD,AS_SHL,AS_SHR,AS_NOT,AS_AND,AS_OR,AS_XOR);
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ const
|
|||||||
_count_asmoperators = longint(lastoperator)-longint(firstoperator);
|
_count_asmoperators = longint(lastoperator)-longint(firstoperator);
|
||||||
|
|
||||||
_asmdirectives : array[0.._count_asmdirectives] of tasmkeyword =
|
_asmdirectives : array[0.._count_asmdirectives] of tasmkeyword =
|
||||||
('DC.B','DC.W','DC.L','END');
|
('DC.B','DC.W','DC.L','XDEF','END');
|
||||||
|
|
||||||
{ problems with shl,shr,not,and,or and xor, they are }
|
{ problems with shl,shr,not,and,or and xor, they are }
|
||||||
{ context sensitive. }
|
{ context sensitive. }
|
||||||
@ -1471,16 +1471,18 @@ type
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
Message1(sym_e_unknown_id,actasmpattern);
|
Message1(sym_e_unknown_id,actasmpattern);
|
||||||
|
|
||||||
|
expr := actasmpattern;
|
||||||
|
Consume(AS_ID);
|
||||||
|
case actasmtoken of
|
||||||
|
AS_LPAREN: { indexing }
|
||||||
|
BuildReference;
|
||||||
|
AS_SEPARATOR,AS_COMMA: ;
|
||||||
|
else
|
||||||
|
Message(asmr_e_syntax_error);
|
||||||
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
expr := actasmpattern;
|
|
||||||
Consume(AS_ID);
|
|
||||||
case actasmtoken of
|
|
||||||
AS_LPAREN: { indexing }
|
|
||||||
BuildReference;
|
|
||||||
AS_SEPARATOR,AS_COMMA: ;
|
|
||||||
else
|
|
||||||
Message(asmr_e_syntax_error);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{ // Pre-decrement mode reference or constant mem offset. // }
|
{ // Pre-decrement mode reference or constant mem offset. // }
|
||||||
@ -2133,6 +2135,15 @@ type
|
|||||||
Consume(AS_DD);
|
Consume(AS_DD);
|
||||||
BuildConstant($ffffffff);
|
BuildConstant($ffffffff);
|
||||||
end;
|
end;
|
||||||
|
AS_XDEF:
|
||||||
|
Begin
|
||||||
|
Consume(AS_XDEF);
|
||||||
|
if actasmtoken=AS_ID then
|
||||||
|
ConcatPublic(curlist,actasmpattern);
|
||||||
|
Consume(AS_ID);
|
||||||
|
if actasmtoken<>AS_SEPARATOR then
|
||||||
|
Consume(AS_SEPARATOR);
|
||||||
|
end;
|
||||||
AS_ALIGN: Begin
|
AS_ALIGN: Begin
|
||||||
Message(asmr_w_align_not_supported);
|
Message(asmr_w_align_not_supported);
|
||||||
while actasmtoken <> AS_SEPARATOR do
|
while actasmtoken <> AS_SEPARATOR do
|
||||||
@ -2197,7 +2208,10 @@ Begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.11 2003-01-08 18:43:57 daniel
|
Revision 1.12 2003-02-12 22:11:13 carl
|
||||||
|
* some small m68k bugfixes
|
||||||
|
|
||||||
|
Revision 1.11 2003/01/08 18:43:57 daniel
|
||||||
* Tregister changed into a record
|
* Tregister changed into a record
|
||||||
|
|
||||||
Revision 1.10 2002/12/14 15:02:03 carl
|
Revision 1.10 2002/12/14 15:02:03 carl
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user