Browse Source

* fix for jcxz, jecxz and jrcxz on 64 bit platforms

git-svn-id: trunk@6400 -
florian 18 years ago
parent
commit
a19ed91cc3

+ 1 - 0
compiler/i386/i386att.inc

@@ -163,6 +163,7 @@
 'iretw',
 'jcxz',
 'jecxz',
+'jrcxz',
 'jmp',
 'lahf',
 'lar',

+ 1 - 0
compiler/i386/i386atts.inc

@@ -163,6 +163,7 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
 attsufINT,
 attsufNONE,
 attsufINT,

+ 1 - 0
compiler/i386/i386int.inc

@@ -163,6 +163,7 @@
 'iretw',
 'jcxz',
 'jecxz',
+'jrcxz',
 'jmp',
 'lahf',
 'lar',

+ 1 - 0
compiler/i386/i386op.inc

@@ -163,6 +163,7 @@ A_IRETD,
 A_IRETW,
 A_JCXZ,
 A_JECXZ,
+A_JRCXZ,
 A_JMP,
 A_LAHF,
 A_LAR,

+ 1 - 0
compiler/i386/i386prop.inc

@@ -163,6 +163,7 @@
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_RECX, Ch_None, Ch_None)),
 (Ch: (Ch_RECX, Ch_None, Ch_None)),
+(Ch: (Ch_RECX, Ch_None, Ch_None)),
 (Ch: (Ch_ROp1, Ch_None, Ch_None)),
 (Ch: (Ch_WEAX, Ch_RFlags, Ch_None)),
 (Ch: (Ch_Wop2, Ch_None, Ch_None)),

+ 4 - 4
compiler/i386/i386tab.inc

@@ -2517,15 +2517,15 @@
     opcode  : A_JCXZ;
     ops     : 1;
     optypes : (ot_immediate,ot_none,ot_none);
-    code    : #200#1#227#40;
-    flags   : if_8086
+    code    : #2#103#227#40;
+    flags   : if_8086 or if_nox86_64
   ),
   (
     opcode  : A_JECXZ;
     ops     : 1;
     optypes : (ot_immediate,ot_none,ot_none);
-    code    : #201#1#227#40;
-    flags   : if_386
+    code    : #1#227#40;
+    flags   : if_386 or if_nox86_64
   ),
   (
     opcode  : A_JMP;

+ 7 - 2
compiler/x86/x86ins.dat

@@ -855,11 +855,16 @@ void                  \324\1\xCF                      8086
 
 [JCXZ]
 (Ch_RECX, Ch_None, Ch_None)
-imm                   \310\1\xE3\50                   8086
+imm                   \2\x67\xE3\50                   8086,NOX86_64
 
 [JECXZ]
 (Ch_RECX, Ch_None, Ch_None)
-imm                   \311\1\xE3\50                   386
+imm                   \1\xE3\50                       386,NOX86_64
+imm                   \2\x67\xE3\50                   X86_64
+
+[JRCXZ]
+(Ch_RECX, Ch_None, Ch_None)
+imm                   \1\xE3\50                       X86_64
 
 [JMP,jmpX]
 (Ch_ROp1, Ch_None, Ch_None)

+ 1 - 0
compiler/x86_64/x8664ats.inc

@@ -163,6 +163,7 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
 attsufINT,
 attsufNONE,
 attsufINT,

+ 1 - 0
compiler/x86_64/x8664att.inc

@@ -163,6 +163,7 @@
 'iretw',
 'jcxz',
 'jecxz',
+'jrcxz',
 'jmp',
 'lahf',
 'lar',

+ 1 - 0
compiler/x86_64/x8664int.inc

@@ -163,6 +163,7 @@
 'iretw',
 'jcxz',
 'jecxz',
+'jrcxz',
 'jmp',
 'lahf',
 'lar',

+ 1 - 0
compiler/x86_64/x8664op.inc

@@ -163,6 +163,7 @@ A_IRETD,
 A_IRETW,
 A_JCXZ,
 A_JECXZ,
+A_JRCXZ,
 A_JMP,
 A_LAHF,
 A_LAR,

+ 1 - 0
compiler/x86_64/x8664pro.inc

@@ -163,6 +163,7 @@
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_RECX, Ch_None, Ch_None)),
 (Ch: (Ch_RECX, Ch_None, Ch_None)),
+(Ch: (Ch_RECX, Ch_None, Ch_None)),
 (Ch: (Ch_ROp1, Ch_None, Ch_None)),
 (Ch: (Ch_WEAX, Ch_RFlags, Ch_None)),
 (Ch: (Ch_Wop2, Ch_None, Ch_None)),

+ 6 - 6
compiler/x86_64/x8664tab.inc

@@ -2500,18 +2500,18 @@
     flags   : if_8086
   ),
   (
-    opcode  : A_JCXZ;
+    opcode  : A_JECXZ;
     ops     : 1;
     optypes : (ot_immediate,ot_none,ot_none);
-    code    : #200#1#227#40;
-    flags   : if_8086
+    code    : #2#103#227#40;
+    flags   : if_x86_64
   ),
   (
-    opcode  : A_JECXZ;
+    opcode  : A_JRCXZ;
     ops     : 1;
     optypes : (ot_immediate,ot_none,ot_none);
-    code    : #213#1#227#40;
-    flags   : if_386
+    code    : #1#227#40;
+    flags   : if_x86_64
   ),
   (
     opcode  : A_JMP;