Browse Source

+ added individual bits of the x86 flags register as subregisters

git-svn-id: trunk@35955 -
nickysn 8 years ago
parent
commit
c8487c4150
51 changed files with 810 additions and 464 deletions
  1. 1 1
      compiler/aarch64/aasmcpu.pas
  2. 10 1
      compiler/cgbase.pas
  3. 40 32
      compiler/i386/r386ari.inc
  4. 8 0
      compiler/i386/r386att.inc
  5. 8 0
      compiler/i386/r386con.inc
  6. 8 0
      compiler/i386/r386dwrf.inc
  7. 8 0
      compiler/i386/r386int.inc
  8. 41 33
      compiler/i386/r386iri.inc
  9. 8 0
      compiler/i386/r386nasm.inc
  10. 1 1
      compiler/i386/r386nor.inc
  11. 41 33
      compiler/i386/r386nri.inc
  12. 8 0
      compiler/i386/r386num.inc
  13. 8 0
      compiler/i386/r386ot.inc
  14. 25 17
      compiler/i386/r386rni.inc
  15. 41 33
      compiler/i386/r386sri.inc
  16. 8 0
      compiler/i386/r386stab.inc
  17. 8 0
      compiler/i386/r386std.inc
  18. 40 32
      compiler/i8086/r8086ari.inc
  19. 8 0
      compiler/i8086/r8086att.inc
  20. 8 0
      compiler/i8086/r8086con.inc
  21. 8 0
      compiler/i8086/r8086dwrf.inc
  22. 8 0
      compiler/i8086/r8086int.inc
  23. 41 33
      compiler/i8086/r8086iri.inc
  24. 8 0
      compiler/i8086/r8086nasm.inc
  25. 1 1
      compiler/i8086/r8086nor.inc
  26. 41 33
      compiler/i8086/r8086nri.inc
  27. 8 0
      compiler/i8086/r8086num.inc
  28. 8 0
      compiler/i8086/r8086ot.inc
  29. 25 17
      compiler/i8086/r8086rni.inc
  30. 41 33
      compiler/i8086/r8086sri.inc
  31. 8 0
      compiler/i8086/r8086stab.inc
  32. 8 0
      compiler/i8086/r8086std.inc
  33. 1 1
      compiler/rgbase.pas
  34. 1 1
      compiler/x86/agx86nsm.pas
  35. 2 2
      compiler/x86/cpubase.pas
  36. 3 3
      compiler/x86/itx86int.pas
  37. 9 0
      compiler/x86/x86reg.dat
  38. 54 46
      compiler/x86_64/r8664ari.inc
  39. 8 0
      compiler/x86_64/r8664att.inc
  40. 8 0
      compiler/x86_64/r8664con.inc
  41. 8 0
      compiler/x86_64/r8664dwrf.inc
  42. 8 0
      compiler/x86_64/r8664int.inc
  43. 54 46
      compiler/x86_64/r8664iri.inc
  44. 8 0
      compiler/x86_64/r8664nasm.inc
  45. 1 1
      compiler/x86_64/r8664nor.inc
  46. 8 0
      compiler/x86_64/r8664num.inc
  47. 8 0
      compiler/x86_64/r8664ot.inc
  48. 26 18
      compiler/x86_64/r8664rni.inc
  49. 54 46
      compiler/x86_64/r8664sri.inc
  50. 8 0
      compiler/x86_64/r8664stab.inc
  51. 8 0
      compiler/x86_64/r8664std.inc

+ 1 - 1
compiler/aarch64/aasmcpu.pas

@@ -528,7 +528,7 @@ implementation
       const
       const
         { invalid sizes for aarch64 are 0 }
         { invalid sizes for aarch64 are 0 }
         subreg2bytesize: array[TSubRegister] of byte =
         subreg2bytesize: array[TSubRegister] of byte =
-          (0,0,0,0,4,8,0,0,0,4,8,0,0,0);
+          (0,0,0,0,4,8,0,0,0,4,8,0,0,0,0,0,0,0,0,0,0,0);
       var
       var
         scalefactor: byte;
         scalefactor: byte;
       begin
       begin

+ 10 - 1
compiler/cgbase.pas

@@ -200,7 +200,16 @@ interface
         R_SUBMMWHOLE,  { = 11; complete MM register, size depends on CPU }
         R_SUBMMWHOLE,  { = 11; complete MM register, size depends on CPU }
         { For Intel X86 AVX-Register }
         { For Intel X86 AVX-Register }
         R_SUBMMX,     { = 12; 128 BITS }
         R_SUBMMX,     { = 12; 128 BITS }
-        R_SUBMMY      { = 13; 256 BITS }
+        R_SUBMMY,     { = 13; 256 BITS }
+        { Subregisters for the flags register (x86) }
+        R_SUBFLAGCARRY,     { = 14; Carry flag }
+        R_SUBFLAGPARITY,    { = 15; Parity flag }
+        R_SUBFLAGAUXILIARY, { = 16; Auxiliary flag }
+        R_SUBFLAGZERO,      { = 17; Zero flag }
+        R_SUBFLAGSIGN,      { = 18; Sign flag }
+        R_SUBFLAGOVERFLOW,  { = 19; Overflow flag }
+        R_SUBFLAGINTERRUPT, { = 20; Interrupt enable flag }
+        R_SUBFLAGDIRECTION  { = 21; Direction flag }
       );
       );
       TSubRegisterSet = set of TSubRegister;
       TSubRegisterSet = set of TSubRegister;
 
 

+ 40 - 32
compiler/i386/r386ari.inc

@@ -1,28 +1,31 @@
 { don't edit, this file is generated from x86reg.dat }
 { don't edit, this file is generated from x86reg.dat }
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -32,13 +35,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -46,32 +66,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 79,
 79,
 80,
 80,
 81,
 81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36,
 0
 0

+ 8 - 0
compiler/i386/r386att.inc

@@ -32,6 +32,14 @@
 '%gs',
 '%gs',
 '%flags',
 '%flags',
 '%eflags',
 '%eflags',
+'%carryflag',
+'%parityflag',
+'%auxiliaryflag',
+'%zeroflag',
+'%signflag',
+'%overflowflag',
+'%interruptflag',
+'%directionflag',
 '%eip',
 '%eip',
 '%dr0',
 '%dr0',
 '%dr1',
 '%dr1',

+ 8 - 0
compiler/i386/r386con.inc

@@ -32,6 +32,14 @@ NR_FS = tregister($05000004);
 NR_GS = tregister($05000005);
 NR_GS = tregister($05000005);
 NR_FLAGS = tregister($05030006);
 NR_FLAGS = tregister($05030006);
 NR_EFLAGS = tregister($05040006);
 NR_EFLAGS = tregister($05040006);
+NR_CARRYFLAG = tregister($050e0006);
+NR_PARITYFLAG = tregister($050f0006);
+NR_AUXILIARYFLAG = tregister($05100006);
+NR_ZEROFLAG = tregister($05110006);
+NR_SIGNFLAG = tregister($05120006);
+NR_OVERFLOWFLAG = tregister($05130006);
+NR_INTERRUPTFLAG = tregister($05140006);
+NR_DIRECTIONFLAG = tregister($05150006);
 NR_EIP = tregister($05040007);
 NR_EIP = tregister($05040007);
 NR_DR0 = tregister($05000008);
 NR_DR0 = tregister($05000008);
 NR_DR1 = tregister($05000009);
 NR_DR1 = tregister($05000009);

+ 8 - 0
compiler/i386/r386dwrf.inc

@@ -32,6 +32,14 @@
 -1,
 -1,
 -1,
 -1,
 -1,
 -1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
 8,
 8,
 -1,
 -1,
 -1,
 -1,

+ 8 - 0
compiler/i386/r386int.inc

@@ -32,6 +32,14 @@
 'gs',
 'gs',
 'flags',
 'flags',
 'eflags',
 'eflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'eip',
 'eip',
 'dr0',
 'dr0',
 'dr1',
 'dr1',

+ 41 - 33
compiler/i386/r386iri.inc

@@ -2,28 +2,31 @@
 0,
 0,
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -33,13 +36,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -47,32 +67,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 78,
 78,
 79,
 79,
 80,
 80,
-81
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36

+ 8 - 0
compiler/i386/r386nasm.inc

@@ -32,6 +32,14 @@
 'gs',
 'gs',
 'flags',
 'flags',
 'eflags',
 'eflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'eip',
 'eip',
 'dr0',
 'dr0',
 'dr1',
 'dr1',

+ 1 - 1
compiler/i386/r386nor.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86reg.dat }
 { don't edit, this file is generated from x86reg.dat }
-82
+90

+ 41 - 33
compiler/i386/r386nri.inc

@@ -2,28 +2,31 @@
 0,
 0,
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -33,13 +36,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -47,32 +67,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 78,
 78,
 79,
 79,
 80,
 80,
-81
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36

+ 8 - 0
compiler/i386/r386num.inc

@@ -32,6 +32,14 @@ tregister($05000004),
 tregister($05000005),
 tregister($05000005),
 tregister($05030006),
 tregister($05030006),
 tregister($05040006),
 tregister($05040006),
+tregister($050e0006),
+tregister($050f0006),
+tregister($05100006),
+tregister($05110006),
+tregister($05120006),
+tregister($05130006),
+tregister($05140006),
+tregister($05150006),
 tregister($05040007),
 tregister($05040007),
 tregister($05000008),
 tregister($05000008),
 tregister($05000009),
 tregister($05000009),

+ 8 - 0
compiler/i386/r386ot.inc

@@ -33,6 +33,14 @@ OT_REG_FSGS,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,

+ 25 - 17
compiler/i386/r386rni.inc

@@ -24,14 +24,6 @@
 20,
 20,
 22,
 22,
 24,
 24,
-49,
-50,
-51,
-52,
-53,
-54,
-55,
-56,
 57,
 57,
 58,
 58,
 59,
 59,
@@ -57,20 +49,20 @@
 79,
 79,
 80,
 80,
 81,
 81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
 25,
 25,
 26,
 26,
 27,
 27,
 28,
 28,
 29,
 29,
 30,
 30,
-34,
-35,
-36,
-37,
-38,
-39,
-40,
-41,
 42,
 42,
 43,
 43,
 44,
 44,
@@ -78,6 +70,22 @@
 46,
 46,
 47,
 47,
 48,
 48,
+49,
+50,
+51,
+52,
+53,
+54,
+55,
+56,
 31,
 31,
 32,
 32,
-33
+41,
+33,
+34,
+35,
+36,
+37,
+38,
+39,
+40

+ 41 - 33
compiler/i386/r386sri.inc

@@ -2,28 +2,31 @@
 0,
 0,
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -33,13 +36,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -47,32 +67,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 78,
 78,
 79,
 79,
 80,
 80,
-81
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36

+ 8 - 0
compiler/i386/r386stab.inc

@@ -48,6 +48,14 @@
 -1,
 -1,
 -1,
 -1,
 -1,
 -1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
 12,
 12,
 13,
 13,
 14,
 14,

+ 8 - 0
compiler/i386/r386std.inc

@@ -32,6 +32,14 @@
 'gs',
 'gs',
 'flags',
 'flags',
 'eflags',
 'eflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'eip',
 'eip',
 'dr0',
 'dr0',
 'dr1',
 'dr1',

+ 40 - 32
compiler/i8086/r8086ari.inc

@@ -1,28 +1,31 @@
 { don't edit, this file is generated from x86reg.dat }
 { don't edit, this file is generated from x86reg.dat }
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -32,13 +35,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -46,32 +66,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 79,
 79,
 80,
 80,
 81,
 81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36,
 0
 0

+ 8 - 0
compiler/i8086/r8086att.inc

@@ -32,6 +32,14 @@
 '%gs',
 '%gs',
 '%flags',
 '%flags',
 '%eflags',
 '%eflags',
+'%carryflag',
+'%parityflag',
+'%auxiliaryflag',
+'%zeroflag',
+'%signflag',
+'%overflowflag',
+'%interruptflag',
+'%directionflag',
 '%eip',
 '%eip',
 '%dr0',
 '%dr0',
 '%dr1',
 '%dr1',

+ 8 - 0
compiler/i8086/r8086con.inc

@@ -32,6 +32,14 @@ NR_FS = tregister($05000004);
 NR_GS = tregister($05000005);
 NR_GS = tregister($05000005);
 NR_FLAGS = tregister($05030006);
 NR_FLAGS = tregister($05030006);
 NR_EFLAGS = tregister($05040006);
 NR_EFLAGS = tregister($05040006);
+NR_CARRYFLAG = tregister($050e0006);
+NR_PARITYFLAG = tregister($050f0006);
+NR_AUXILIARYFLAG = tregister($05100006);
+NR_ZEROFLAG = tregister($05110006);
+NR_SIGNFLAG = tregister($05120006);
+NR_OVERFLOWFLAG = tregister($05130006);
+NR_INTERRUPTFLAG = tregister($05140006);
+NR_DIRECTIONFLAG = tregister($05150006);
 NR_EIP = tregister($05040007);
 NR_EIP = tregister($05040007);
 NR_DR0 = tregister($05000008);
 NR_DR0 = tregister($05000008);
 NR_DR1 = tregister($05000009);
 NR_DR1 = tregister($05000009);

+ 8 - 0
compiler/i8086/r8086dwrf.inc

@@ -32,6 +32,14 @@
 -1,
 -1,
 -1,
 -1,
 -1,
 -1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
 8,
 8,
 -1,
 -1,
 -1,
 -1,

+ 8 - 0
compiler/i8086/r8086int.inc

@@ -32,6 +32,14 @@
 'gs',
 'gs',
 'flags',
 'flags',
 'eflags',
 'eflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'eip',
 'eip',
 'dr0',
 'dr0',
 'dr1',
 'dr1',

+ 41 - 33
compiler/i8086/r8086iri.inc

@@ -2,28 +2,31 @@
 0,
 0,
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -33,13 +36,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -47,32 +67,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 78,
 78,
 79,
 79,
 80,
 80,
-81
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36

+ 8 - 0
compiler/i8086/r8086nasm.inc

@@ -32,6 +32,14 @@
 'gs',
 'gs',
 'flags',
 'flags',
 'eflags',
 'eflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'eip',
 'eip',
 'dr0',
 'dr0',
 'dr1',
 'dr1',

+ 1 - 1
compiler/i8086/r8086nor.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86reg.dat }
 { don't edit, this file is generated from x86reg.dat }
-82
+90

+ 41 - 33
compiler/i8086/r8086nri.inc

@@ -2,28 +2,31 @@
 0,
 0,
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -33,13 +36,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -47,32 +67,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 78,
 78,
 79,
 79,
 80,
 80,
-81
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36

+ 8 - 0
compiler/i8086/r8086num.inc

@@ -32,6 +32,14 @@ tregister($05000004),
 tregister($05000005),
 tregister($05000005),
 tregister($05030006),
 tregister($05030006),
 tregister($05040006),
 tregister($05040006),
+tregister($050e0006),
+tregister($050f0006),
+tregister($05100006),
+tregister($05110006),
+tregister($05120006),
+tregister($05130006),
+tregister($05140006),
+tregister($05150006),
 tregister($05040007),
 tregister($05040007),
 tregister($05000008),
 tregister($05000008),
 tregister($05000009),
 tregister($05000009),

+ 8 - 0
compiler/i8086/r8086ot.inc

@@ -33,6 +33,14 @@ OT_REG_FSGS,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,

+ 25 - 17
compiler/i8086/r8086rni.inc

@@ -24,14 +24,6 @@
 20,
 20,
 22,
 22,
 24,
 24,
-49,
-50,
-51,
-52,
-53,
-54,
-55,
-56,
 57,
 57,
 58,
 58,
 59,
 59,
@@ -57,20 +49,20 @@
 79,
 79,
 80,
 80,
 81,
 81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
 25,
 25,
 26,
 26,
 27,
 27,
 28,
 28,
 29,
 29,
 30,
 30,
-34,
-35,
-36,
-37,
-38,
-39,
-40,
-41,
 42,
 42,
 43,
 43,
 44,
 44,
@@ -78,6 +70,22 @@
 46,
 46,
 47,
 47,
 48,
 48,
+49,
+50,
+51,
+52,
+53,
+54,
+55,
+56,
 31,
 31,
 32,
 32,
-33
+41,
+33,
+34,
+35,
+36,
+37,
+38,
+39,
+40

+ 41 - 33
compiler/i8086/r8086sri.inc

@@ -2,28 +2,31 @@
 0,
 0,
 2,
 2,
 1,
 1,
+35,
 3,
 3,
 14,
 14,
 13,
 13,
 21,
 21,
 15,
 15,
+33,
 6,
 6,
 5,
 5,
-40,
-41,
-42,
-43,
+48,
+49,
+50,
+51,
 26,
 26,
 7,
 7,
 10,
 10,
 19,
 19,
+40,
 9,
 9,
-34,
-35,
-36,
-37,
-38,
-39,
+42,
+43,
+44,
+45,
+46,
+47,
 28,
 28,
 11,
 11,
 4,
 4,
@@ -33,13 +36,30 @@
 20,
 20,
 12,
 12,
 32,
 32,
-33,
+41,
 25,
 25,
 18,
 18,
 24,
 24,
 31,
 31,
 29,
 29,
 30,
 30,
+39,
+66,
+67,
+68,
+69,
+70,
+71,
+72,
+73,
+38,
+34,
+17,
+37,
+23,
+27,
+65,
+57,
 58,
 58,
 59,
 59,
 60,
 60,
@@ -47,32 +67,11 @@
 62,
 62,
 63,
 63,
 64,
 64,
-65,
-17,
-23,
-27,
-57,
-49,
-50,
-51,
 52,
 52,
 53,
 53,
 54,
 54,
 55,
 55,
 56,
 56,
-44,
-45,
-46,
-47,
-48,
-66,
-67,
-68,
-69,
-70,
-71,
-72,
-73,
 74,
 74,
 75,
 75,
 76,
 76,
@@ -80,4 +79,13 @@
 78,
 78,
 79,
 79,
 80,
 80,
-81
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+36

+ 8 - 0
compiler/i8086/r8086stab.inc

@@ -48,6 +48,14 @@
 -1,
 -1,
 -1,
 -1,
 -1,
 -1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
 12,
 12,
 13,
 13,
 14,
 14,

+ 8 - 0
compiler/i8086/r8086std.inc

@@ -32,6 +32,14 @@
 'gs',
 'gs',
 'flags',
 'flags',
 'eflags',
 'eflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'eip',
 'eip',
 'dr0',
 'dr0',
 'dr1',
 'dr1',

+ 1 - 1
compiler/rgbase.pas

@@ -29,7 +29,7 @@ interface
       cpuBase,cgBase;
       cpuBase,cgBase;
 
 
     type
     type
-      TRegNameTable = array[tregisterindex] of string[11];
+      TRegNameTable = array[tregisterindex] of string[14];
       TRegisterIndexTable = array[tregisterindex] of tregisterindex;
       TRegisterIndexTable = array[tregisterindex] of tregisterindex;
 
 
     function findreg_by_number_table(r:Tregister;const regnumber_index:TRegisterIndexTable):tregisterindex;
     function findreg_by_number_table(r:Tregister;const regnumber_index:TRegisterIndexTable):tregisterindex;

+ 1 - 1
compiler/x86/agx86nsm.pas

@@ -72,7 +72,7 @@ interface
     const
     const
       line_length = 64;
       line_length = 64;
 
 
-      nasm_regname_table : array[tregisterindex] of string[7] = (
+      nasm_regname_table : array[tregisterindex] of string[13] = (
         {r386nasm.inc contains the Nasm name of each register.}
         {r386nasm.inc contains the Nasm name of each register.}
 {$if defined(x86_64)}
 {$if defined(x86_64)}
         {$i r8664nasm.inc}
         {$i r8664nasm.inc}

+ 2 - 2
compiler/x86/cpubase.pas

@@ -420,7 +420,7 @@ implementation
 
 
     function reg_cgsize(const reg: tregister): tcgsize;
     function reg_cgsize(const reg: tregister): tcgsize;
       const subreg2cgsize:array[Tsubregister] of Tcgsize =
       const subreg2cgsize:array[Tsubregister] of Tcgsize =
-            (OS_NO,OS_8,OS_8,OS_16,OS_32,OS_64,OS_NO,OS_NO,OS_NO,OS_F32,OS_F64,OS_NO,OS_M128,OS_M256);
+            (OS_NO,OS_8,OS_8,OS_16,OS_32,OS_64,OS_NO,OS_NO,OS_NO,OS_F32,OS_F64,OS_NO,OS_M128,OS_M256,OS_NO,OS_NO,OS_NO,OS_NO,OS_NO,OS_NO,OS_NO,OS_NO);
       begin
       begin
         case getregtype(reg) of
         case getregtype(reg) of
           R_INTREGISTER :
           R_INTREGISTER :
@@ -451,7 +451,7 @@ implementation
     function reg2opsize(r:Tregister):topsize;
     function reg2opsize(r:Tregister):topsize;
       const
       const
         subreg2opsize : array[tsubregister] of topsize =
         subreg2opsize : array[tsubregister] of topsize =
-          (S_NO,S_B,S_B,S_W,S_L,S_Q,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO);
+          (S_NO,S_B,S_B,S_W,S_L,S_Q,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO);
       begin
       begin
         reg2opsize:=S_L;
         reg2opsize:=S_L;
         case getregtype(r) of
         case getregtype(r) of

+ 3 - 3
compiler/x86/itx86int.pas

@@ -40,7 +40,7 @@ implementation
 
 
     const
     const
     {$if defined(x86_64)}
     {$if defined(x86_64)}
-      int_regname_table : array[tregisterindex] of string[7] = (
+      int_regname_table : array[tregisterindex] of string[13] = (
         {$i r8664int.inc}
         {$i r8664int.inc}
       );
       );
 
 
@@ -48,7 +48,7 @@ implementation
         {$i r8664iri.inc}
         {$i r8664iri.inc}
       );
       );
     {$elseif defined(i386)}
     {$elseif defined(i386)}
-      int_regname_table : array[tregisterindex] of string[7] = (
+      int_regname_table : array[tregisterindex] of string[13] = (
         {$i r386int.inc}
         {$i r386int.inc}
       );
       );
 
 
@@ -56,7 +56,7 @@ implementation
         {$i r386iri.inc}
         {$i r386iri.inc}
       );
       );
     {$elseif defined(i8086)}
     {$elseif defined(i8086)}
-      int_regname_table : array[tregisterindex] of string[7] = (
+      int_regname_table : array[tregisterindex] of string[13] = (
         {$i r8086int.inc}
         {$i r8086int.inc}
       );
       );
 
 

+ 9 - 0
compiler/x86/x86reg.dat

@@ -94,6 +94,15 @@ NR_GS,$05000005,gs,%gs,gs,gs,-1,-1,-1,OT_REG_FSGS,5
 NR_FLAGS,$05030006,flags,%flags,flags,flags,-1,-1,-1,OT_NONE,0
 NR_FLAGS,$05030006,flags,%flags,flags,flags,-1,-1,-1,OT_NONE,0
 NR_EFLAGS,$05040006,eflags,%eflags,eflags,eflags,-1,-1,-1,OT_NONE,0
 NR_EFLAGS,$05040006,eflags,%eflags,eflags,eflags,-1,-1,-1,OT_NONE,0
 NR_RFLAGS,$05050006,rflags,%rflags,rflags,rflags,-1,-1,-1,OT_NONE,0,64
 NR_RFLAGS,$05050006,rflags,%rflags,rflags,rflags,-1,-1,-1,OT_NONE,0,64
+NR_CARRYFLAG,$050e0006,carryflag,%carryflag,carryflag,carryflag,-1,-1,-1,OT_NONE,0
+NR_PARITYFLAG,$050f0006,parityflag,%parityflag,parityflag,parityflag,-1,-1,-1,OT_NONE,0
+NR_AUXILIARYFLAG,$05100006,auxiliaryflag,%auxiliaryflag,auxiliaryflag,auxiliaryflag,-1,-1,-1,OT_NONE,0
+NR_ZEROFLAG,$05110006,zeroflag,%zeroflag,zeroflag,zeroflag,-1,-1,-1,OT_NONE,0
+NR_SIGNFLAG,$05120006,signflag,%signflag,signflag,signflag,-1,-1,-1,OT_NONE,0
+NR_OVERFLOWFLAG,$05130006,overflowflag,%overflowflag,overflowflag,overflowflag,-1,-1,-1,OT_NONE,0
+NR_INTERRUPTFLAG,$05140006,interruptflag,%interruptflag,interruptflag,interruptflag,-1,-1,-1,OT_NONE,0
+NR_DIRECTIONFLAG,$05150006,directionflag,%directionflag,directionflag,directionflag,-1,-1,-1,OT_NONE,0
+
 ; EIP is needed for DWARF call frame info return address (RA)
 ; EIP is needed for DWARF call frame info return address (RA)
 NR_RIP,$05050007,rip,%rip,rip,rip,-1,8,16,OT_NONE,0,64
 NR_RIP,$05050007,rip,%rip,rip,rip,-1,8,16,OT_NONE,0,64
 NR_EIP,$05040007,eip,%eip,eip,eip,-1,8,16,OT_NONE,0
 NR_EIP,$05040007,eip,%eip,eip,eip,-1,8,16,OT_NONE,0

+ 54 - 46
compiler/x86_64/r8664ari.inc

@@ -1,30 +1,33 @@
 { don't edit, this file is generated from x86reg.dat }
 { don't edit, this file is generated from x86reg.dat }
 2,
 2,
 1,
 1,
+80,
 3,
 3,
 17,
 17,
 16,
 16,
 30,
 30,
 29,
 29,
 18,
 18,
+78,
 7,
 7,
 6,
 6,
-86,
-87,
-88,
-89,
+94,
+95,
+96,
+97,
 70,
 70,
 8,
 8,
 12,
 12,
 26,
 26,
 25,
 25,
-11,
-80,
-81,
-82,
-83,
-84,
 85,
 85,
+11,
+88,
+89,
+90,
+91,
+92,
+93,
 72,
 72,
 13,
 13,
 4,
 4,
@@ -34,21 +37,24 @@
 27,
 27,
 14,
 14,
 76,
 76,
-79,
+87,
 69,
 69,
 23,
 23,
 35,
 35,
 75,
 75,
 73,
 73,
 74,
 74,
-104,
-105,
-106,
-107,
-108,
-109,
-110,
-111,
+84,
+112,
+113,
+114,
+115,
+116,
+117,
+118,
+119,
+83,
+79,
 45,
 45,
 46,
 46,
 48,
 48,
@@ -88,58 +94,60 @@
 28,
 28,
 15,
 15,
 77,
 77,
-78,
+86,
 24,
 24,
 36,
 36,
 22,
 22,
+82,
 21,
 21,
 34,
 34,
 33,
 33,
 71,
 71,
+111,
 103,
 103,
-95,
-96,
-97,
+104,
+105,
+106,
+107,
+108,
+109,
+110,
 98,
 98,
 99,
 99,
 100,
 100,
 101,
 101,
 102,
 102,
-90,
-91,
-92,
-93,
-94,
-112,
-113,
+120,
+121,
+130,
+131,
+132,
+133,
+134,
+135,
 122,
 122,
 123,
 123,
 124,
 124,
 125,
 125,
 126,
 126,
 127,
 127,
-114,
-115,
-116,
-117,
-118,
-119,
-120,
-121,
 128,
 128,
 129,
 129,
+136,
+137,
+146,
+147,
+148,
+149,
+150,
+151,
 138,
 138,
 139,
 139,
 140,
 140,
 141,
 141,
 142,
 142,
 143,
 143,
-130,
-131,
-132,
-133,
-134,
-135,
-136,
-137,
+144,
+145,
+81,
 0
 0

+ 8 - 0
compiler/x86_64/r8664att.inc

@@ -77,6 +77,14 @@
 '%flags',
 '%flags',
 '%eflags',
 '%eflags',
 '%rflags',
 '%rflags',
+'%carryflag',
+'%parityflag',
+'%auxiliaryflag',
+'%zeroflag',
+'%signflag',
+'%overflowflag',
+'%interruptflag',
+'%directionflag',
 '%rip',
 '%rip',
 '%eip',
 '%eip',
 '%dr0',
 '%dr0',

+ 8 - 0
compiler/x86_64/r8664con.inc

@@ -77,6 +77,14 @@ NR_GS = tregister($05000005);
 NR_FLAGS = tregister($05030006);
 NR_FLAGS = tregister($05030006);
 NR_EFLAGS = tregister($05040006);
 NR_EFLAGS = tregister($05040006);
 NR_RFLAGS = tregister($05050006);
 NR_RFLAGS = tregister($05050006);
+NR_CARRYFLAG = tregister($050e0006);
+NR_PARITYFLAG = tregister($050f0006);
+NR_AUXILIARYFLAG = tregister($05100006);
+NR_ZEROFLAG = tregister($05110006);
+NR_SIGNFLAG = tregister($05120006);
+NR_OVERFLOWFLAG = tregister($05130006);
+NR_INTERRUPTFLAG = tregister($05140006);
+NR_DIRECTIONFLAG = tregister($05150006);
 NR_RIP = tregister($05050007);
 NR_RIP = tregister($05050007);
 NR_EIP = tregister($05040007);
 NR_EIP = tregister($05040007);
 NR_DR0 = tregister($05000008);
 NR_DR0 = tregister($05000008);

+ 8 - 0
compiler/x86_64/r8664dwrf.inc

@@ -77,6 +77,14 @@
 -1,
 -1,
 -1,
 -1,
 -1,
 -1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
 16,
 16,
 16,
 16,
 -1,
 -1,

+ 8 - 0
compiler/x86_64/r8664int.inc

@@ -77,6 +77,14 @@
 'flags',
 'flags',
 'eflags',
 'eflags',
 'rflags',
 'rflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'rip',
 'rip',
 'eip',
 'eip',
 'dr0',
 'dr0',

+ 54 - 46
compiler/x86_64/r8664iri.inc

@@ -2,30 +2,33 @@
 0,
 0,
 2,
 2,
 1,
 1,
+80,
 3,
 3,
 17,
 17,
 16,
 16,
 30,
 30,
 29,
 29,
 18,
 18,
+78,
 7,
 7,
 6,
 6,
-86,
-87,
-88,
-89,
+94,
+95,
+96,
+97,
 70,
 70,
 8,
 8,
 12,
 12,
 26,
 26,
 25,
 25,
-11,
-80,
-81,
-82,
-83,
-84,
 85,
 85,
+11,
+88,
+89,
+90,
+91,
+92,
+93,
 72,
 72,
 13,
 13,
 4,
 4,
@@ -35,21 +38,24 @@
 27,
 27,
 14,
 14,
 76,
 76,
-79,
+87,
 69,
 69,
 23,
 23,
 35,
 35,
 75,
 75,
 73,
 73,
 74,
 74,
-104,
-105,
-106,
-107,
-108,
-109,
-110,
-111,
+84,
+112,
+113,
+114,
+115,
+116,
+117,
+118,
+119,
+83,
+79,
 45,
 45,
 46,
 46,
 48,
 48,
@@ -89,57 +95,59 @@
 28,
 28,
 15,
 15,
 77,
 77,
-78,
+86,
 24,
 24,
 36,
 36,
 22,
 22,
+82,
 21,
 21,
 34,
 34,
 33,
 33,
 71,
 71,
+111,
 103,
 103,
-95,
-96,
-97,
+104,
+105,
+106,
+107,
+108,
+109,
+110,
 98,
 98,
 99,
 99,
 100,
 100,
 101,
 101,
 102,
 102,
-90,
-91,
-92,
-93,
-94,
-112,
-113,
+120,
+121,
+130,
+131,
+132,
+133,
+134,
+135,
 122,
 122,
 123,
 123,
 124,
 124,
 125,
 125,
 126,
 126,
 127,
 127,
-114,
-115,
-116,
-117,
-118,
-119,
-120,
-121,
 128,
 128,
 129,
 129,
+136,
+137,
+146,
+147,
+148,
+149,
+150,
+151,
 138,
 138,
 139,
 139,
 140,
 140,
 141,
 141,
 142,
 142,
 143,
 143,
-130,
-131,
-132,
-133,
-134,
-135,
-136,
-137
+144,
+145,
+81

+ 8 - 0
compiler/x86_64/r8664nasm.inc

@@ -77,6 +77,14 @@
 'flags',
 'flags',
 'eflags',
 'eflags',
 'rflags',
 'rflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'rip',
 'rip',
 'eip',
 'eip',
 'dr0',
 'dr0',

+ 1 - 1
compiler/x86_64/r8664nor.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86reg.dat }
 { don't edit, this file is generated from x86reg.dat }
-144
+152

+ 8 - 0
compiler/x86_64/r8664num.inc

@@ -77,6 +77,14 @@ tregister($05000005),
 tregister($05030006),
 tregister($05030006),
 tregister($05040006),
 tregister($05040006),
 tregister($05050006),
 tregister($05050006),
+tregister($050e0006),
+tregister($050f0006),
+tregister($05100006),
+tregister($05110006),
+tregister($05120006),
+tregister($05130006),
+tregister($05140006),
+tregister($05150006),
 tregister($05050007),
 tregister($05050007),
 tregister($05040007),
 tregister($05040007),
 tregister($05000008),
 tregister($05000008),

+ 8 - 0
compiler/x86_64/r8664ot.inc

@@ -79,6 +79,14 @@ OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
 OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
+OT_NONE,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,
 OT_REG_DREG,

+ 26 - 18
compiler/x86_64/r8664rni.inc

@@ -68,14 +68,6 @@
 57,
 57,
 61,
 61,
 65,
 65,
-95,
-96,
-97,
-98,
-99,
-100,
-101,
-102,
 103,
 103,
 104,
 104,
 105,
 105,
@@ -117,20 +109,20 @@
 141,
 141,
 142,
 142,
 143,
 143,
+144,
+145,
+146,
+147,
+148,
+149,
+150,
+151,
 69,
 69,
 70,
 70,
 71,
 71,
 72,
 72,
 73,
 73,
 74,
 74,
-80,
-81,
-82,
-83,
-84,
-85,
-86,
-87,
 88,
 88,
 89,
 89,
 90,
 90,
@@ -138,8 +130,24 @@
 92,
 92,
 93,
 93,
 94,
 94,
+95,
+96,
+97,
+98,
+99,
+100,
+101,
+102,
 75,
 75,
 76,
 76,
-79,
+87,
 77,
 77,
-78
+86,
+78,
+79,
+80,
+81,
+82,
+83,
+84,
+85

+ 54 - 46
compiler/x86_64/r8664sri.inc

@@ -2,30 +2,33 @@
 0,
 0,
 2,
 2,
 1,
 1,
+80,
 3,
 3,
 17,
 17,
 16,
 16,
 30,
 30,
 29,
 29,
 18,
 18,
+78,
 7,
 7,
 6,
 6,
-86,
-87,
-88,
-89,
+94,
+95,
+96,
+97,
 70,
 70,
 8,
 8,
 12,
 12,
 26,
 26,
 25,
 25,
-11,
-80,
-81,
-82,
-83,
-84,
 85,
 85,
+11,
+88,
+89,
+90,
+91,
+92,
+93,
 72,
 72,
 13,
 13,
 4,
 4,
@@ -35,21 +38,24 @@
 27,
 27,
 14,
 14,
 76,
 76,
-79,
+87,
 69,
 69,
 23,
 23,
 35,
 35,
 75,
 75,
 73,
 73,
 74,
 74,
-104,
-105,
-106,
-107,
-108,
-109,
-110,
-111,
+84,
+112,
+113,
+114,
+115,
+116,
+117,
+118,
+119,
+83,
+79,
 45,
 45,
 46,
 46,
 48,
 48,
@@ -89,57 +95,59 @@
 28,
 28,
 15,
 15,
 77,
 77,
-78,
+86,
 24,
 24,
 36,
 36,
 22,
 22,
+82,
 21,
 21,
 34,
 34,
 33,
 33,
 71,
 71,
+111,
 103,
 103,
-95,
-96,
-97,
+104,
+105,
+106,
+107,
+108,
+109,
+110,
 98,
 98,
 99,
 99,
 100,
 100,
 101,
 101,
 102,
 102,
-90,
-91,
-92,
-93,
-94,
-112,
-113,
+120,
+121,
+130,
+131,
+132,
+133,
+134,
+135,
 122,
 122,
 123,
 123,
 124,
 124,
 125,
 125,
 126,
 126,
 127,
 127,
-114,
-115,
-116,
-117,
-118,
-119,
-120,
-121,
 128,
 128,
 129,
 129,
+136,
+137,
+146,
+147,
+148,
+149,
+150,
+151,
 138,
 138,
 139,
 139,
 140,
 140,
 141,
 141,
 142,
 142,
 143,
 143,
-130,
-131,
-132,
-133,
-134,
-135,
-136,
-137
+144,
+145,
+81

+ 8 - 0
compiler/x86_64/r8664stab.inc

@@ -77,6 +77,14 @@
 -1,
 -1,
 -1,
 -1,
 -1,
 -1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
+-1,
 16,
 16,
 16,
 16,
 -1,
 -1,

+ 8 - 0
compiler/x86_64/r8664std.inc

@@ -77,6 +77,14 @@
 'flags',
 'flags',
 'eflags',
 'eflags',
 'rflags',
 'rflags',
+'carryflag',
+'parityflag',
+'auxiliaryflag',
+'zeroflag',
+'signflag',
+'overflowflag',
+'interruptflag',
+'directionflag',
 'rip',
 'rip',
 'eip',
 'eip',
 'dr0',
 'dr0',