Browse Source

m68k: updated instruction tables to match vasm release 1.9a

Karoly Balogh 2 năm trước cách đây
mục cha
commit
e19f60503b
4 tập tin đã thay đổi với 27 bổ sung110 xóa
  1. 8 16
      compiler/m68k/m68kins.dat
  2. 1 1
      compiler/m68k/m68knop.inc
  3. 12 92
      compiler/m68k/m68ktab.inc
  4. 6 1
      compiler/utils/mk68kins.pp

+ 8 - 16
compiler/m68k/m68kins.dat

@@ -1502,15 +1502,13 @@ Dx                                                                    $e208,$000
 Ax,<ea-alter>                                                         $0008,$0000    1 WL                 gnu_as,m68000up,cf
 <ea-any>,Ax                                                           $0040,$0000    1 WL                 gnu_as,m68000up,cf
 <ea-data>,<ea-data-alter>                                             $0000,$0000    1 BWL                gnu_as,m68000up,cf
-CCR,Dx                                                                $42c0,$0000    1 W                  gnu_as,m68010up,cf
+CCR,Dx                                                                $42c0,$0000    1 W                  gnu_as,cf
 CCR,<ea-data-alter>                                                   $42c0,$0000    1 W                  gnu_as,m68010up
-SR,Dx                                                                 $40c0,$0000    1 W                  gnu_as,m68000up,cf
+SR,Dx                                                                 $40c0,$0000    1 W                  gnu_as,cf
 SR,<ea-data-alter>                                                    $40c0,$0000    1 W                  gnu_as,m68000up
-Dx,CCR                                                                $44c0,$0000    1 W                  gnu_as,m68000up,cf
-#imm,CCR                                                              $44c0,$0000    1 W                  gnu_as,m68000up,cf
+<ea-data-imm>,CCR                                                     $44c0,$0000    1 W                  gnu_as,cf
 <ea-data>,CCR                                                         $44c0,$0000    1 W                  gnu_as,m68000up
-Dx,SR                                                                 $46c0,$0000    1 W                  gnu_as,m68000up,cf
-#imm,SR                                                               $46c0,$0000    1 W                  gnu_as,m68000up,cf
+<ea-data-imm>,SR                                                      $46c0,$0000    1 W                  gnu_as,cf
 <ea-data>,SR                                                          $46c0,$0000    1 W                  gnu_as,m68000up
 USP,Ax                                                                $4e68,$0000    1 L                  gnu_as,m68000up,cf_usp
 Ax,USP                                                                $4e60,$0000    1 L                  gnu_as,m68000up,cf_usp
@@ -1522,15 +1520,13 @@ Ax,USP                                                                $4e60,$000
 Ax,<ea-alter>                                                         $0008,$0000    1 WL                 m68000up,cf
 <ea-any>,Ax                                                           $0040,$0000    1 WL                 m68000up,cf
 <ea-data>,<ea-data-alter>                                             $0000,$0000    1 BWL                m68000up,cf
-CCR,Dx                                                                $42c0,$0000    1 W                  m68010up,cf
+CCR,Dx                                                                $42c0,$0000    1 W                  cf
 CCR,<ea-data-alter>                                                   $42c0,$0000    1 W                  m68010up
-SR,Dx                                                                 $40c0,$0000    1 W                  m68000up,cf
+SR,Dx                                                                 $40c0,$0000    1 W                  cf
 SR,<ea-data-alter>                                                    $40c0,$0000    1 W                  m68000up
-Dx,CCR                                                                $44c0,$0000    1 W                  m68000up,cf
-#imm,CCR                                                              $44c0,$0000    1 W                  m68000up,cf
+<ea-data-imm>,CCR                                                     $44c0,$0000    1 W                  cf
 <ea-data>,CCR                                                         $44c0,$0000    1 W                  m68000up
-Dx,SR                                                                 $46c0,$0000    1 W                  m68000up,cf
-#imm,SR                                                               $46c0,$0000    1 W                  m68000up,cf
+<ea-data-imm>,SR                                                      $46c0,$0000    1 W                  cf
 <ea-data>,SR                                                          $46c0,$0000    1 W                  m68000up
 USP,Ax                                                                $4e68,$0000    1 L                  m68000up,cf_usp
 Ax,USP                                                                $4e60,$0000    1 L                  m68000up,cf_usp
@@ -1576,17 +1572,13 @@ Rx,<ea-mem-alter>                                                     $0e00,$080
 Dx-Ax,-(Ax)                                                           $4880,$0000    2 WL                 gnu_as,m68000up
 Dx-Ax,<cf-ea-movem>                                                   $4880,$0000    2 CFWL               gnu_as,m68000up,cf
 Dx-Ax,<ea-control-alter>                                              $4880,$0000    2 WL                 gnu_as,m68000up
-Dx-Ax,<ea-control>                                                    $4880,$0000    2 WL                 gnu_as
 <cf-ea-movem>,Dx-Ax                                                   $4c80,$0000    2 CFWL               gnu_as,m68000up,cf
 <ea-mem-restore>,Dx-Ax                                                $4c80,$0000    2 WL                 gnu_as,m68000up
-<ea-mem-restore>,Dx-Ax                                                $4c80,$0000    2 WL                 gnu_as
 #immregs,-(Ax)                                                        $4880,$0000    2 WL                 gnu_as,m68000up
 #immregs,<cf-ea-movem>                                                $4880,$0000    2 CFWL               gnu_as,m68000up,cf
 #immregs,<ea-control-alter>                                           $4880,$0000    2 WL                 gnu_as,m68000up
-#immregs,<ea-control>                                                 $4880,$0000    2 WL                 gnu_as
 <cf-ea-movem>,#immregs                                                $4c80,$0000    2 CFWL               gnu_as,m68000up,cf
 <ea-mem-restore>,#immregs                                             $4c80,$0000    2 WL                 gnu_as,m68000up
-<ea-mem-restore>,#immregs                                             $4c80,$0000    2 WL                 gnu_as
 
 [MULS]
 <cf-ea-data-alter>,Dx                                                 $c1c0,$0000    1 W                  m68000up,cf

+ 1 - 1
compiler/m68k/m68knop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from m68kins.dat; to regenerate, run 'make insdat' in the compiler directory }
-1177;
+1169;

+ 12 - 92
compiler/m68k/m68ktab.inc

@@ -7767,7 +7767,7 @@
     opflags : ([OF_SPECREG, OF_SPECREG_CCR],[],[],[],[],[]);
     codelen : 1;
     code    : ($42c0,$0000);
-    support : [OS_GNU_AS, OS_M68010UP, OS_CF];
+    support : [OS_GNU_AS, OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -7787,7 +7787,7 @@
     opflags : ([OF_SPECREG, OF_SPECREG_SR],[],[],[],[],[]);
     codelen : 1;
     code    : ($40c0,$0000);
-    support : [OS_GNU_AS, OS_M68000UP, OS_CF];
+    support : [OS_GNU_AS, OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -7803,21 +7803,11 @@
   (
     opcode  : A_MOV;
     ops     : 2;
-    optypes : ([OT_DATA],[OT_SPECIALREG],[],[],[],[]);
-    opflags : ([],[OF_SPECREG, OF_SPECREG_CCR],[],[],[],[]);
-    codelen : 1;
-    code    : ($44c0,$0000);
-    support : [OS_GNU_AS, OS_M68000UP, OS_CF];
-    sizes   : [OPS_WORD];
-  ),
-  (
-    opcode  : A_MOV;
-    ops     : 2;
-    optypes : ([OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
+    optypes : ([OT_DATA, OT_ADDR_INDIR, OT_ADDR_INDIR_POSTINC, OT_ADDR_INDIR_PREDEC, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG, OT_PC_DISP16, OT_PC_IDX_DISP8, OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
     opflags : ([],[OF_SPECREG, OF_SPECREG_CCR],[],[],[],[]);
     codelen : 1;
     code    : ($44c0,$0000);
-    support : [OS_GNU_AS, OS_M68000UP, OS_CF];
+    support : [OS_GNU_AS, OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -7833,21 +7823,11 @@
   (
     opcode  : A_MOV;
     ops     : 2;
-    optypes : ([OT_DATA],[OT_SPECIALREG],[],[],[],[]);
-    opflags : ([],[OF_SPECREG, OF_SPECREG_SR],[],[],[],[]);
-    codelen : 1;
-    code    : ($46c0,$0000);
-    support : [OS_GNU_AS, OS_M68000UP, OS_CF];
-    sizes   : [OPS_WORD];
-  ),
-  (
-    opcode  : A_MOV;
-    ops     : 2;
-    optypes : ([OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
+    optypes : ([OT_DATA, OT_ADDR_INDIR, OT_ADDR_INDIR_POSTINC, OT_ADDR_INDIR_PREDEC, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG, OT_PC_DISP16, OT_PC_IDX_DISP8, OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
     opflags : ([],[OF_SPECREG, OF_SPECREG_SR],[],[],[],[]);
     codelen : 1;
     code    : ($46c0,$0000);
-    support : [OS_GNU_AS, OS_M68000UP, OS_CF];
+    support : [OS_GNU_AS, OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -7927,7 +7907,7 @@
     opflags : ([OF_SPECREG, OF_SPECREG_CCR],[],[],[],[],[]);
     codelen : 1;
     code    : ($42c0,$0000);
-    support : [OS_M68010UP, OS_CF];
+    support : [OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -7947,7 +7927,7 @@
     opflags : ([OF_SPECREG, OF_SPECREG_SR],[],[],[],[],[]);
     codelen : 1;
     code    : ($40c0,$0000);
-    support : [OS_M68000UP, OS_CF];
+    support : [OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -7963,21 +7943,11 @@
   (
     opcode  : A_MOVE;
     ops     : 2;
-    optypes : ([OT_DATA],[OT_SPECIALREG],[],[],[],[]);
-    opflags : ([],[OF_SPECREG, OF_SPECREG_CCR],[],[],[],[]);
-    codelen : 1;
-    code    : ($44c0,$0000);
-    support : [OS_M68000UP, OS_CF];
-    sizes   : [OPS_WORD];
-  ),
-  (
-    opcode  : A_MOVE;
-    ops     : 2;
-    optypes : ([OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
+    optypes : ([OT_DATA, OT_ADDR_INDIR, OT_ADDR_INDIR_POSTINC, OT_ADDR_INDIR_PREDEC, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG, OT_PC_DISP16, OT_PC_IDX_DISP8, OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
     opflags : ([],[OF_SPECREG, OF_SPECREG_CCR],[],[],[],[]);
     codelen : 1;
     code    : ($44c0,$0000);
-    support : [OS_M68000UP, OS_CF];
+    support : [OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -7993,21 +7963,11 @@
   (
     opcode  : A_MOVE;
     ops     : 2;
-    optypes : ([OT_DATA],[OT_SPECIALREG],[],[],[],[]);
-    opflags : ([],[OF_SPECREG, OF_SPECREG_SR],[],[],[],[]);
-    codelen : 1;
-    code    : ($46c0,$0000);
-    support : [OS_M68000UP, OS_CF];
-    sizes   : [OPS_WORD];
-  ),
-  (
-    opcode  : A_MOVE;
-    ops     : 2;
-    optypes : ([OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
+    optypes : ([OT_DATA, OT_ADDR_INDIR, OT_ADDR_INDIR_POSTINC, OT_ADDR_INDIR_PREDEC, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG, OT_PC_DISP16, OT_PC_IDX_DISP8, OT_IMMEDIATE],[OT_SPECIALREG],[],[],[],[]);
     opflags : ([],[OF_SPECREG, OF_SPECREG_SR],[],[],[],[]);
     codelen : 1;
     code    : ($46c0,$0000);
-    support : [OS_M68000UP, OS_CF];
+    support : [OS_CF];
     sizes   : [OPS_WORD];
   ),
   (
@@ -8300,16 +8260,6 @@
     support : [OS_GNU_AS, OS_M68000UP];
     sizes   : [OPS_WORD, OPS_LONG];
   ),
-  (
-    opcode  : A_MOVM;
-    ops     : 2;
-    optypes : ([OT_REG_LIST],[OT_ADDR_INDIR, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG, OT_PC_DISP16, OT_PC_IDX_DISP8],[],[],[],[]);
-    opflags : ([],[],[],[],[],[]);
-    codelen : 2;
-    code    : ($4880,$0000);
-    support : [OS_GNU_AS];
-    sizes   : [OPS_WORD, OPS_LONG];
-  ),
   (
     opcode  : A_MOVM;
     ops     : 2;
@@ -8330,16 +8280,6 @@
     support : [OS_GNU_AS, OS_M68000UP];
     sizes   : [OPS_WORD, OPS_LONG];
   ),
-  (
-    opcode  : A_MOVM;
-    ops     : 2;
-    optypes : ([OT_ADDR_INDIR, OT_ADDR_INDIR_POSTINC, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG],[OT_REG_LIST],[],[],[],[]);
-    opflags : ([],[],[],[],[],[]);
-    codelen : 2;
-    code    : ($4c80,$0000);
-    support : [OS_GNU_AS];
-    sizes   : [OPS_WORD, OPS_LONG];
-  ),
   (
     opcode  : A_MOVM;
     ops     : 2;
@@ -8370,16 +8310,6 @@
     support : [OS_GNU_AS, OS_M68000UP];
     sizes   : [OPS_WORD, OPS_LONG];
   ),
-  (
-    opcode  : A_MOVM;
-    ops     : 2;
-    optypes : ([OT_IMMEDIATE],[OT_ADDR_INDIR, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG, OT_PC_DISP16, OT_PC_IDX_DISP8],[],[],[],[]);
-    opflags : ([OF_NOSIZE],[],[],[],[],[]);
-    codelen : 2;
-    code    : ($4880,$0000);
-    support : [OS_GNU_AS];
-    sizes   : [OPS_WORD, OPS_LONG];
-  ),
   (
     opcode  : A_MOVM;
     ops     : 2;
@@ -8400,16 +8330,6 @@
     support : [OS_GNU_AS, OS_M68000UP];
     sizes   : [OPS_WORD, OPS_LONG];
   ),
-  (
-    opcode  : A_MOVM;
-    ops     : 2;
-    optypes : ([OT_ADDR_INDIR, OT_ADDR_INDIR_POSTINC, OT_ADDR_DISP16, OT_ADDR_IDX_DISP8, OT_ABS_SHORT, OT_ABS_LONG],[OT_IMMEDIATE],[],[],[],[]);
-    opflags : ([],[OF_NOSIZE],[],[],[],[]);
-    codelen : 2;
-    code    : ($4c80,$0000);
-    support : [OS_GNU_AS];
-    sizes   : [OPS_WORD, OPS_LONG];
-  ),
   (
     opcode  : A_MULS;
     ops     : 2;

+ 6 - 1
compiler/utils/mk68kins.pp

@@ -161,7 +161,7 @@ const
   );
 
 const
-  ParamTypes: array [0..63] of TParamType = (
+  ParamTypes: array [0..64] of TParamType = (
     (id: 'void';     modes: []; flags: []),
     (id: '#imm';     modes: [OT_IMMEDIATE]; flags: []),
     (id: '#immq';    modes: [OT_IMMEDIATE]; flags: [OF_NOSIZE,OF_IMM_QUICK]),
@@ -257,6 +257,11 @@ const
              OT_ADDR_DISP16,OT_ADDR_IDX_DISP8,OT_ABS_SHORT,OT_ABS_LONG,
              OT_PC_DISP16,OT_PC_IDX_DISP8];
      flags: []),
+    (id: '<ea-data-imm>';
+     modes: [OT_DATA,OT_ADDR_INDIR,OT_ADDR_INDIR_POSTINC,OT_ADDR_INDIR_PREDEC,
+             OT_ADDR_DISP16,OT_ADDR_IDX_DISP8,OT_ABS_SHORT,OT_ABS_LONG,
+             OT_PC_DISP16,OT_PC_IDX_DISP8,OT_IMMEDIATE];
+     flags: []),
     (id: '<ea-data-alter>';
      modes: [OT_DATA,OT_ADDR_INDIR,OT_ADDR_INDIR_POSTINC,OT_ADDR_INDIR_PREDEC,
              OT_ADDR_DISP16,OT_ADDR_IDX_DISP8,OT_ABS_SHORT,OT_ABS_LONG];