mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 14:29:44 +02:00
* more 68000 fixref changes
git-svn-id: trunk@22764 -
This commit is contained in:
parent
d8c2930454
commit
0b404fea69
@ -425,7 +425,8 @@ unit cgcpu;
|
|||||||
displacement.
|
displacement.
|
||||||
}
|
}
|
||||||
{ first ensure that base is an address register }
|
{ first ensure that base is an address register }
|
||||||
if (ref.base<>NR_NO) and not isaddressregister(ref.base) then
|
if (not assigned (ref.symbol) and (current_settings.cputype<>cpu_MC68000)) and
|
||||||
|
(ref.base<>NR_NO) and not isaddressregister(ref.base) then
|
||||||
begin
|
begin
|
||||||
hreg:=getaddressregister(list);
|
hreg:=getaddressregister(list);
|
||||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,ref.base,hreg));
|
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,ref.base,hreg));
|
||||||
@ -466,6 +467,23 @@ unit cgcpu;
|
|||||||
ref.offset := 0;
|
ref.offset := 0;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
if assigned(ref.symbol) then
|
||||||
|
begin
|
||||||
|
hreg:=getaddressregister(list);
|
||||||
|
idxreg:=ref.base;
|
||||||
|
ref.base:=NR_NO;
|
||||||
|
list.concat(taicpu.op_ref_reg(A_LEA,S_L,ref,hreg));
|
||||||
|
reference_reset_base(ref,hreg,0,ref.alignment);
|
||||||
|
fixref:=true;
|
||||||
|
ref.index:=idxreg;
|
||||||
|
end
|
||||||
|
else if not isaddressregister(ref.base) then
|
||||||
|
begin
|
||||||
|
hreg:=getaddressregister(list);
|
||||||
|
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,ref.base,hreg));
|
||||||
|
fixref:=true;
|
||||||
|
ref.base:=hreg;
|
||||||
|
end;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
{ Note: symbol -> ref would be supported as long as ref does not
|
{ Note: symbol -> ref would be supported as long as ref does not
|
||||||
|
Loading…
Reference in New Issue
Block a user