浏览代码

* some cg reorganisation
* some PPC updates

florian 24 年之前
父节点
当前提交
53bf8e9c0c
共有 1 个文件被更改,包括 130 次插入10 次删除
  1. 130 10
      compiler/new/powerpc/tgcpu.pas

+ 130 - 10
compiler/new/powerpc/tgcpu.pas

@@ -25,25 +25,147 @@ unit tgcpu;
   interface
 
     uses
-       tgobj;
+       globals,
+       cgbase,verbose,aasm,
+       node,
+       cpuinfo,cpubase,cpuasm;
+
+    const
+       { this value is used in tsaved, if the register isn't saved }
+       reg_not_saved = $7fffffff;
 
     type
+       tpushed = array[R_NO..R_NO] of boolean;
+       tsaved = array[R_NO..R_NO] of longint;
+
+    var
+       { tries to hold the amount of times which the current tree is processed  }
+       t_times : longint;
+
+    function getregisterint : tregister;
+    procedure ungetregisterint(r : tregister);
+    { tries to allocate the passed register, if possible }
+    function getexplicitregisterint(r : tregister) : tregister;
+
+    procedure ungetregister(r : tregister);
+
+    procedure cleartempgen;
+    procedure del_reference(const ref : treference);
+    procedure del_locref(const location : tlocation);
+    procedure del_location(const l : tlocation);
+
+    { pushs and restores registers }
+    procedure pushusedregisters(var pushed : tpushed;b : byte);
+    procedure popusedregisters(const pushed : tpushed);
+
+    { saves and restores used registers to temp. values }
+    procedure saveusedregisters(var saved : tsaved;b : byte);
+    procedure restoreusedregisters(const saved : tsaved);
+
+    { increments the push count of all registers in b}
+    procedure incrementregisterpushed(regs : tregisterset);
 
-       ttgppc = Object(ttgobj)
-       end;
+    procedure clearregistercount;
+    procedure resetusableregisters;
+
+    type
+       regvar_longintarray = array[0..32+32-1] of longint;
+       regvar_booleanarray = array[0..32+32-1] of boolean;
+       regvar_ptreearray = array[0..32+32-1] of tnode;
 
     var
-       tg : ttgppc;
+       unused,usableregs : tregisterset;
+
+       { uses only 1 byte while a set uses in FPC 32 bytes }
+       usedinproc : byte;
+
+       { count, how much a register must be pushed if it is used as register }
+       { variable                                                           }
+       reg_pushes : regvar_longintarray;
+       is_reg_var : regvar_booleanarray;
+
 
 implementation
 
+    uses
+      globtype,temp_gen;
+
+
+    function getregisterint : tregister;
+      begin
+      end;
+
+    procedure ungetregisterint(r : tregister);
+      begin
+      end;
+
+    { tries to allocate the passed register, if possible }
+    function getexplicitregisterint(r : tregister) : tregister;
+      begin
+      end;
+
+    procedure ungetregister(r : tregister);
+      begin
+      end;
+
+    procedure cleartempgen;
+      begin
+      end;
+
+    procedure del_reference(const ref : treference);
+      begin
+      end;
+
+    procedure del_locref(const location : tlocation);
+      begin
+      end;
+
+    procedure del_location(const l : tlocation);
+      begin
+      end;
+
+    { pushs and restores registers }
+    procedure pushusedregisters(var pushed : tpushed;b : byte);
+      begin
+      end;
+
+    procedure popusedregisters(const pushed : tpushed);
+      begin
+      end;
+
+    { saves and restores used registers to temp. values }
+    procedure saveusedregisters(var saved : tsaved;b : byte);
+      begin
+      end;
+
+    procedure restoreusedregisters(const saved : tsaved);
+      begin
+      end;
+
+    { increments the push count of all registers in b}
+    procedure incrementregisterpushed(regs : tregisterset);
+      begin
+      end;
+
+    procedure clearregistercount;
+      begin
+      end;
+
+    procedure resetusableregisters;
+      begin
+      end;
+
 begin
-  tg.init;
+   resetusableregisters;
 end.
 {
   $Log$
-  Revision 1.1  2000-07-13 06:30:13  michael
-  + Initial import
+  Revision 1.2  2001-08-26 13:23:23  florian
+    * some cg reorganisation
+    * some PPC updates
+
+  Revision 1.1  2000/07/13 06:30:13  michael
+    + Initial import
 
   Revision 1.3  2000/01/07 01:14:58  peter
     * updated copyright to 2000
@@ -54,6 +176,4 @@ end.
 
   Revision 1.1  1999/08/03 23:37:53  jonas
     + initial implementation for PowerPC based on the Alpha stuff
-
-
-}
+}