]> granicus.if.org Git - yasm/commitdiff
Inserted /* @FOO@ */ markers for dynamic generation via gen_instr.pl.
authorMichael Urman <mu@tortall.net>
Mon, 21 May 2001 21:44:47 +0000 (21:44 -0000)
committerMichael Urman <mu@tortall.net>
Mon, 21 May 2001 21:44:47 +0000 (21:44 -0000)
svn path=/trunk/yasm/; revision=27

modules/parsers/nasm/bison.y.in
modules/parsers/nasm/nasm-bison.y
modules/parsers/nasm/token.l.in
src/bison.y.in
src/parsers/nasm/bison.y.in
src/parsers/nasm/nasm-bison.y
src/parsers/nasm/token.l.in
src/token.l.in

index 2ebe4bcc17a634bd7383621f43bf6203dc712c64..f852b1fa92afa492e0fcaf4375b5b744d1ab8cc6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bison.y.in,v 1.4 2001/05/21 18:31:42 peter Exp $
+/* $Id: bison.y.in,v 1.5 2001/05/21 21:44:47 mu Exp $
  * Main bison parser
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -64,10 +64,10 @@ extern void yyerror(char *);
 %token START_SECTION_OFFSET ENTRY_POINT
 %token <sym> ID
 
-/* TODO: dynamically generate instruction tokens: */
-%token INS_AAA INS_AAD INS_IDIV INS_IMUL INS_IN INS_LOOPZ INS_LSL
+/* instruction tokens (dynamically generated) */
+/* @TOKENS@ */
 
-%type <bc> aaa aad idiv imul in loopz lsl
+/* @TYPES@ */
 
 %type <bc> line exp instr instrbase
 
@@ -309,118 +309,6 @@ instr: instrbase
     | REPZ instr       { $$ = $2; $$.data.insn.lockrep_pre = 0xF4; }
 ;
 
-/* instructions */
-/* TODO: dynamically generate */
-instrbase:     aaa
-    | aad
-    | idiv
-    | imul
-    | in
-    | loopz
-    | lsl
-;
-
-aaa: INS_AAA {
-       BuildBC_Insn(&$$, 0, 1, 0x37, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-aad: INS_AAD {
-       BuildBC_Insn(&$$, 0, 2, 0xD5, 0x0A, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_AAD imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xD5, 0, (effaddr *)NULL, 0, &$2, 1, 0, 0);
-    }
-;
-
-idiv: INS_IDIV rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-imul: INS_IMUL rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, &$4, $2, &$6, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, &$4, $2, &$6, 4, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 4, 1, 0);
-    }
-;
-
-in: INS_IN REG_AL ',' imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xE4, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AX ',' imm8 {
-       BuildBC_Insn(&$$, 16, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_EAX ',' imm8 {
-       BuildBC_Insn(&$$, 32, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AL ',' REG_DX {
-       BuildBC_Insn(&$$, 0, 1, 0xEC, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_AX ',' REG_DX {
-       BuildBC_Insn(&$$, 16, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_EAX ',' REG_DX {
-       BuildBC_Insn(&$$, 32, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-loopz: INS_LOOPZ imm1632 {
-       BuildBC_Insn(&$$, 0, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_CX {
-       BuildBC_Insn(&$$, 16, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_ECX {
-       BuildBC_Insn(&$$, 32, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-;
-
-lsl: INS_LSL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_LSL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-;
+/* instruction grammars (dynamically generated) */
+/* @INSTRUCTIONS@ */
 
index f7576f1e2a399cf294c5eb0102ff6df1f7ccd9ab..dcf37620a649d404af92636aee605c9b694322e8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: nasm-bison.y,v 1.4 2001/05/21 18:31:42 peter Exp $
+/* $Id: nasm-bison.y,v 1.5 2001/05/21 21:44:47 mu Exp $
  * Main bison parser
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -64,10 +64,10 @@ extern void yyerror(char *);
 %token START_SECTION_OFFSET ENTRY_POINT
 %token <sym> ID
 
-/* TODO: dynamically generate instruction tokens: */
-%token INS_AAA INS_AAD INS_IDIV INS_IMUL INS_IN INS_LOOPZ INS_LSL
+/* instruction tokens (dynamically generated) */
+/* @TOKENS@ */
 
-%type <bc> aaa aad idiv imul in loopz lsl
+/* @TYPES@ */
 
 %type <bc> line exp instr instrbase
 
@@ -309,118 +309,6 @@ instr: instrbase
     | REPZ instr       { $$ = $2; $$.data.insn.lockrep_pre = 0xF4; }
 ;
 
-/* instructions */
-/* TODO: dynamically generate */
-instrbase:     aaa
-    | aad
-    | idiv
-    | imul
-    | in
-    | loopz
-    | lsl
-;
-
-aaa: INS_AAA {
-       BuildBC_Insn(&$$, 0, 1, 0x37, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-aad: INS_AAD {
-       BuildBC_Insn(&$$, 0, 2, 0xD5, 0x0A, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_AAD imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xD5, 0, (effaddr *)NULL, 0, &$2, 1, 0, 0);
-    }
-;
-
-idiv: INS_IDIV rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-imul: INS_IMUL rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, &$4, $2, &$6, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, &$4, $2, &$6, 4, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 4, 1, 0);
-    }
-;
-
-in: INS_IN REG_AL ',' imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xE4, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AX ',' imm8 {
-       BuildBC_Insn(&$$, 16, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_EAX ',' imm8 {
-       BuildBC_Insn(&$$, 32, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AL ',' REG_DX {
-       BuildBC_Insn(&$$, 0, 1, 0xEC, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_AX ',' REG_DX {
-       BuildBC_Insn(&$$, 16, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_EAX ',' REG_DX {
-       BuildBC_Insn(&$$, 32, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-loopz: INS_LOOPZ imm1632 {
-       BuildBC_Insn(&$$, 0, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_CX {
-       BuildBC_Insn(&$$, 16, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_ECX {
-       BuildBC_Insn(&$$, 32, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-;
-
-lsl: INS_LSL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_LSL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-;
+/* instruction grammars (dynamically generated) */
+/* @INSTRUCTIONS@ */
 
index 0ab8de9d1880903ab787875a51595ba8165207dd..47278dc4527e5f22696d32b9f2c2afdf130ca3a1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: token.l.in,v 1.3 2001/05/20 08:39:48 peter Exp $
+/* $Id: token.l.in,v 1.4 2001/05/21 21:44:47 mu Exp $
  * Main lexer
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -236,15 +236,7 @@ gs { yylval.int_val = 5; return REG_GS; }
 }
 
     /* instructions */
-    /* TODO: dynamically generate */
-aaa    { return INS_AAA; }
-aad    { return INS_AAD; }
-idiv   { return INS_IDIV; }
-imul   { return INS_IMUL; }
-in     { return INS_IN; }
-loope  { return INS_LOOPZ; }
-loopz  { return INS_LOOPZ; }
-lsl    { return INS_LSL; }
+    /* @INSTRUCTIONS@ */
 
     /* label */
 [a-z_?][a-z0-9_$#@~.?]* {
index 2ebe4bcc17a634bd7383621f43bf6203dc712c64..f852b1fa92afa492e0fcaf4375b5b744d1ab8cc6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bison.y.in,v 1.4 2001/05/21 18:31:42 peter Exp $
+/* $Id: bison.y.in,v 1.5 2001/05/21 21:44:47 mu Exp $
  * Main bison parser
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -64,10 +64,10 @@ extern void yyerror(char *);
 %token START_SECTION_OFFSET ENTRY_POINT
 %token <sym> ID
 
-/* TODO: dynamically generate instruction tokens: */
-%token INS_AAA INS_AAD INS_IDIV INS_IMUL INS_IN INS_LOOPZ INS_LSL
+/* instruction tokens (dynamically generated) */
+/* @TOKENS@ */
 
-%type <bc> aaa aad idiv imul in loopz lsl
+/* @TYPES@ */
 
 %type <bc> line exp instr instrbase
 
@@ -309,118 +309,6 @@ instr: instrbase
     | REPZ instr       { $$ = $2; $$.data.insn.lockrep_pre = 0xF4; }
 ;
 
-/* instructions */
-/* TODO: dynamically generate */
-instrbase:     aaa
-    | aad
-    | idiv
-    | imul
-    | in
-    | loopz
-    | lsl
-;
-
-aaa: INS_AAA {
-       BuildBC_Insn(&$$, 0, 1, 0x37, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-aad: INS_AAD {
-       BuildBC_Insn(&$$, 0, 2, 0xD5, 0x0A, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_AAD imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xD5, 0, (effaddr *)NULL, 0, &$2, 1, 0, 0);
-    }
-;
-
-idiv: INS_IDIV rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-imul: INS_IMUL rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, &$4, $2, &$6, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, &$4, $2, &$6, 4, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 4, 1, 0);
-    }
-;
-
-in: INS_IN REG_AL ',' imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xE4, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AX ',' imm8 {
-       BuildBC_Insn(&$$, 16, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_EAX ',' imm8 {
-       BuildBC_Insn(&$$, 32, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AL ',' REG_DX {
-       BuildBC_Insn(&$$, 0, 1, 0xEC, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_AX ',' REG_DX {
-       BuildBC_Insn(&$$, 16, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_EAX ',' REG_DX {
-       BuildBC_Insn(&$$, 32, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-loopz: INS_LOOPZ imm1632 {
-       BuildBC_Insn(&$$, 0, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_CX {
-       BuildBC_Insn(&$$, 16, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_ECX {
-       BuildBC_Insn(&$$, 32, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-;
-
-lsl: INS_LSL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_LSL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-;
+/* instruction grammars (dynamically generated) */
+/* @INSTRUCTIONS@ */
 
index 2ebe4bcc17a634bd7383621f43bf6203dc712c64..f852b1fa92afa492e0fcaf4375b5b744d1ab8cc6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bison.y.in,v 1.4 2001/05/21 18:31:42 peter Exp $
+/* $Id: bison.y.in,v 1.5 2001/05/21 21:44:47 mu Exp $
  * Main bison parser
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -64,10 +64,10 @@ extern void yyerror(char *);
 %token START_SECTION_OFFSET ENTRY_POINT
 %token <sym> ID
 
-/* TODO: dynamically generate instruction tokens: */
-%token INS_AAA INS_AAD INS_IDIV INS_IMUL INS_IN INS_LOOPZ INS_LSL
+/* instruction tokens (dynamically generated) */
+/* @TOKENS@ */
 
-%type <bc> aaa aad idiv imul in loopz lsl
+/* @TYPES@ */
 
 %type <bc> line exp instr instrbase
 
@@ -309,118 +309,6 @@ instr: instrbase
     | REPZ instr       { $$ = $2; $$.data.insn.lockrep_pre = 0xF4; }
 ;
 
-/* instructions */
-/* TODO: dynamically generate */
-instrbase:     aaa
-    | aad
-    | idiv
-    | imul
-    | in
-    | loopz
-    | lsl
-;
-
-aaa: INS_AAA {
-       BuildBC_Insn(&$$, 0, 1, 0x37, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-aad: INS_AAD {
-       BuildBC_Insn(&$$, 0, 2, 0xD5, 0x0A, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_AAD imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xD5, 0, (effaddr *)NULL, 0, &$2, 1, 0, 0);
-    }
-;
-
-idiv: INS_IDIV rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-imul: INS_IMUL rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, &$4, $2, &$6, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, &$4, $2, &$6, 4, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 4, 1, 0);
-    }
-;
-
-in: INS_IN REG_AL ',' imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xE4, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AX ',' imm8 {
-       BuildBC_Insn(&$$, 16, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_EAX ',' imm8 {
-       BuildBC_Insn(&$$, 32, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AL ',' REG_DX {
-       BuildBC_Insn(&$$, 0, 1, 0xEC, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_AX ',' REG_DX {
-       BuildBC_Insn(&$$, 16, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_EAX ',' REG_DX {
-       BuildBC_Insn(&$$, 32, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-loopz: INS_LOOPZ imm1632 {
-       BuildBC_Insn(&$$, 0, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_CX {
-       BuildBC_Insn(&$$, 16, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_ECX {
-       BuildBC_Insn(&$$, 32, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-;
-
-lsl: INS_LSL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_LSL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-;
+/* instruction grammars (dynamically generated) */
+/* @INSTRUCTIONS@ */
 
index f7576f1e2a399cf294c5eb0102ff6df1f7ccd9ab..dcf37620a649d404af92636aee605c9b694322e8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: nasm-bison.y,v 1.4 2001/05/21 18:31:42 peter Exp $
+/* $Id: nasm-bison.y,v 1.5 2001/05/21 21:44:47 mu Exp $
  * Main bison parser
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -64,10 +64,10 @@ extern void yyerror(char *);
 %token START_SECTION_OFFSET ENTRY_POINT
 %token <sym> ID
 
-/* TODO: dynamically generate instruction tokens: */
-%token INS_AAA INS_AAD INS_IDIV INS_IMUL INS_IN INS_LOOPZ INS_LSL
+/* instruction tokens (dynamically generated) */
+/* @TOKENS@ */
 
-%type <bc> aaa aad idiv imul in loopz lsl
+/* @TYPES@ */
 
 %type <bc> line exp instr instrbase
 
@@ -309,118 +309,6 @@ instr: instrbase
     | REPZ instr       { $$ = $2; $$.data.insn.lockrep_pre = 0xF4; }
 ;
 
-/* instructions */
-/* TODO: dynamically generate */
-instrbase:     aaa
-    | aad
-    | idiv
-    | imul
-    | in
-    | loopz
-    | lsl
-;
-
-aaa: INS_AAA {
-       BuildBC_Insn(&$$, 0, 1, 0x37, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-aad: INS_AAD {
-       BuildBC_Insn(&$$, 0, 2, 0xD5, 0x0A, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_AAD imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xD5, 0, (effaddr *)NULL, 0, &$2, 1, 0, 0);
-    }
-;
-
-idiv: INS_IDIV rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IDIV rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 7, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-imul: INS_IMUL rm8x {
-       BuildBC_Insn(&$$, 0, 1, 0xF6, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm16x {
-       BuildBC_Insn(&$$, 16, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL rm32x {
-       BuildBC_Insn(&$$, 32, 1, 0xF7, 0, &$2, 5, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0xAF, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, &$4, $2, &$6, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' rm16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, &$4, $2, &$6, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' rm32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, &$4, $2, &$6, 4, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm8x {
-       BuildBC_Insn(&$$, 16, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm8x {
-       BuildBC_Insn(&$$, 32, 1, 0x6B, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 1, 1, 0);
-    }
-    | INS_IMUL reg16 ',' imm16 {
-       BuildBC_Insn(&$$, 16, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 2, 1, 0);
-    }
-    | INS_IMUL reg32 ',' imm32 {
-       BuildBC_Insn(&$$, 32, 1, 0x69, 0, ConvertRegToEA((effaddr *)NULL, $2), $2, &$4, 4, 1, 0);
-    }
-;
-
-in: INS_IN REG_AL ',' imm8 {
-       BuildBC_Insn(&$$, 0, 1, 0xE4, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AX ',' imm8 {
-       BuildBC_Insn(&$$, 16, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_EAX ',' imm8 {
-       BuildBC_Insn(&$$, 32, 1, 0xE5, 0, (effaddr *)NULL, 0, &$4, 1, 0, 0);
-    }
-    | INS_IN REG_AL ',' REG_DX {
-       BuildBC_Insn(&$$, 0, 1, 0xEC, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_AX ',' REG_DX {
-       BuildBC_Insn(&$$, 16, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_IN REG_EAX ',' REG_DX {
-       BuildBC_Insn(&$$, 32, 1, 0xED, 0, (effaddr *)NULL, 0, (immval *)NULL, 0, 0, 0);
-    }
-;
-
-loopz: INS_LOOPZ imm1632 {
-       BuildBC_Insn(&$$, 0, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_CX {
-       BuildBC_Insn(&$$, 16, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-    | INS_LOOPZ imm1632 ',' REG_ECX {
-       BuildBC_Insn(&$$, 32, 1, 0xE1, 0, (effaddr *)NULL, 0, &$2, 1, 1, 1);
-    }
-;
-
-lsl: INS_LSL reg16 ',' rm16 {
-       BuildBC_Insn(&$$, 16, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-    | INS_LSL reg32 ',' rm32 {
-       BuildBC_Insn(&$$, 32, 2, 0x0F, 0x03, &$4, $2, (immval *)NULL, 0, 0, 0);
-    }
-;
+/* instruction grammars (dynamically generated) */
+/* @INSTRUCTIONS@ */
 
index 0ab8de9d1880903ab787875a51595ba8165207dd..47278dc4527e5f22696d32b9f2c2afdf130ca3a1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: token.l.in,v 1.3 2001/05/20 08:39:48 peter Exp $
+/* $Id: token.l.in,v 1.4 2001/05/21 21:44:47 mu Exp $
  * Main lexer
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -236,15 +236,7 @@ gs { yylval.int_val = 5; return REG_GS; }
 }
 
     /* instructions */
-    /* TODO: dynamically generate */
-aaa    { return INS_AAA; }
-aad    { return INS_AAD; }
-idiv   { return INS_IDIV; }
-imul   { return INS_IMUL; }
-in     { return INS_IN; }
-loope  { return INS_LOOPZ; }
-loopz  { return INS_LOOPZ; }
-lsl    { return INS_LSL; }
+    /* @INSTRUCTIONS@ */
 
     /* label */
 [a-z_?][a-z0-9_$#@~.?]* {
index 0ab8de9d1880903ab787875a51595ba8165207dd..47278dc4527e5f22696d32b9f2c2afdf130ca3a1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: token.l.in,v 1.3 2001/05/20 08:39:48 peter Exp $
+/* $Id: token.l.in,v 1.4 2001/05/21 21:44:47 mu Exp $
  * Main lexer
  *
  *  Copyright (C) 2001  Peter Johnson
@@ -236,15 +236,7 @@ gs { yylval.int_val = 5; return REG_GS; }
 }
 
     /* instructions */
-    /* TODO: dynamically generate */
-aaa    { return INS_AAA; }
-aad    { return INS_AAD; }
-idiv   { return INS_IDIV; }
-imul   { return INS_IMUL; }
-in     { return INS_IN; }
-loope  { return INS_LOOPZ; }
-loopz  { return INS_LOOPZ; }
-lsl    { return INS_LSL; }
+    /* @INSTRUCTIONS@ */
 
     /* label */
 [a-z_?][a-z0-9_$#@~.?]* {