Selaa lähdekoodia

+ support near pointers, bound to a segment register in hlcg.reference_reset_base
on i8086

git-svn-id: trunk@27688 -

nickysn 11 vuotta sitten
vanhempi
commit
7da8719036
1 muutettua tiedostoa jossa 20 lisäystä ja 2 poistoa
  1. 20 2
      compiler/i8086/hlcgcpu.pas

+ 20 - 2
compiler/i8086/hlcgcpu.pas

@@ -253,8 +253,26 @@ implementation
       if is_implicit_pointer_object_type(regsize) or is_implicit_array_pointer(regsize) then
         regsize:=voidpointertype;
 
-      if is_farpointer(regsize) or is_hugepointer(regsize) then
-        ref.segment:=GetNextReg(reg);
+      if regsize.typ=pointerdef then
+        case tcpupointerdef(regsize).x86pointertyp of
+          x86pt_near:
+            ;
+          x86pt_near_cs:
+            ref.segment:=NR_CS;
+          x86pt_near_ds:
+            ref.segment:=NR_DS;
+          x86pt_near_ss:
+            ref.segment:=NR_SS;
+          x86pt_near_es:
+            ref.segment:=NR_ES;
+          x86pt_near_fs:
+            ref.segment:=NR_FS;
+          x86pt_near_gs:
+            ref.segment:=NR_GS;
+          x86pt_far,
+          x86pt_huge:
+            ref.segment:=GetNextReg(reg);
+        end;
     end;