* more 68000 fixref changes

git-svn-id: trunk@22764 -
This commit is contained in:
pierre 2012-10-19 12:34:41 +00:00
parent d8c2930454
commit 0b404fea69

View File

@ -425,7 +425,8 @@ unit cgcpu;
displacement.
}
{ 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
hreg:=getaddressregister(list);
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,ref.base,hreg));
@ -466,6 +467,23 @@ unit cgcpu;
ref.offset := 0;
exit;
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
else
{ Note: symbol -> ref would be supported as long as ref does not