|
@@ -373,13 +373,20 @@ unit cgx86;
|
|
ref.index:=hreg
|
|
ref.index:=hreg
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
|
|
+ { don't use add, as the flags may contain a value }
|
|
|
|
+ reference_reset_base(href,ref.base,0,8);
|
|
|
|
+ href.index:=hreg;
|
|
if ref.scalefactor<>0 then
|
|
if ref.scalefactor<>0 then
|
|
begin
|
|
begin
|
|
- list.concat(taicpu.op_reg_reg(A_ADD,S_Q,ref.base,hreg));
|
|
|
|
|
|
+ reference_reset_base(href,ref.base,0,8);
|
|
|
|
+ href.index:=hreg;
|
|
|
|
+ list.concat(taicpu.op_ref_reg(A_LEA,S_Q,href,hreg));
|
|
ref.base:=hreg;
|
|
ref.base:=hreg;
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
|
|
+ reference_reset_base(href,ref.index,0,8);
|
|
|
|
+ href.index:=hreg;
|
|
list.concat(taicpu.op_reg_reg(A_ADD,S_Q,ref.index,hreg));
|
|
list.concat(taicpu.op_reg_reg(A_ADD,S_Q,ref.index,hreg));
|
|
ref.index:=hreg;
|
|
ref.index:=hreg;
|
|
end;
|
|
end;
|
|
@@ -435,7 +442,10 @@ unit cgx86;
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- list.concat(taicpu.op_reg_reg(A_ADD,S_Q,ref.base,hreg));
|
|
|
|
|
|
+ { don't use add, as the flags may contain a value }
|
|
|
|
+ reference_reset_base(href,ref.base,0,8);
|
|
|
|
+ href.index:=hreg;
|
|
|
|
+ list.concat(taicpu.op_ref_reg(A_LEA,S_Q,href,hreg));
|
|
ref.base:=hreg;
|
|
ref.base:=hreg;
|
|
end;
|
|
end;
|
|
end
|
|
end
|
|
@@ -467,7 +477,10 @@ unit cgx86;
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- list.concat(taicpu.op_reg_reg(A_ADD,S_Q,ref.base,hreg));
|
|
|
|
|
|
+ { don't use add, as the flags may contain a value }
|
|
|
|
+ reference_reset_base(href,ref.base,0,8);
|
|
|
|
+ href.index:=hreg;
|
|
|
|
+ list.concat(taicpu.op_ref_reg(A_LEA,S_Q,href,hreg));
|
|
ref.base:=hreg;
|
|
ref.base:=hreg;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
@@ -525,7 +538,10 @@ unit cgx86;
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- list.concat(taicpu.op_reg_reg(A_ADD,S_L,ref.base,hreg));
|
|
|
|
|
|
+ { don't use add, as the flags may contain a value }
|
|
|
|
+ reference_reset_base(href,ref.base,0,8);
|
|
|
|
+ href.index:=hreg;
|
|
|
|
+ list.concat(taicpu.op_ref_reg(A_LEA,S_L,href,hreg));
|
|
ref.base:=hreg;
|
|
ref.base:=hreg;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|