|
@@ -1,6 +1,6 @@
|
|
|
%{
|
|
|
|
|
|
-char *rcs_luastx = "$Id: lua.stx,v 3.33 1996/02/26 17:07:20 roberto Exp roberto $";
|
|
|
+char *rcs_luastx = "$Id: lua.stx,v 3.34 1996/02/26 21:00:27 roberto Exp roberto $";
|
|
|
|
|
|
#include <stdio.h>
|
|
|
#include <stdlib.h>
|
|
@@ -793,230 +793,3 @@ setdebug : DEBUG { lua_debug = $1; }
|
|
|
;
|
|
|
|
|
|
%%
|
|
|
-
|
|
|
-#if LISTING
|
|
|
-
|
|
|
-static void PrintCode (Byte *code, Byte *end)
|
|
|
-{
|
|
|
- Byte *p = code;
|
|
|
- printf ("\n\nCODE\n");
|
|
|
- while (p != end)
|
|
|
- {
|
|
|
- switch ((OpCode)*p)
|
|
|
- {
|
|
|
- case PUSHNIL: printf ("%d PUSHNIL\n", (p++)-code); break;
|
|
|
- case PUSH0: case PUSH1: case PUSH2:
|
|
|
- printf ("%d PUSH%c\n", p-code, *p-PUSH0+'0');
|
|
|
- p++;
|
|
|
- break;
|
|
|
- case PUSHBYTE:
|
|
|
- printf ("%d PUSHBYTE %d\n", p-code, *(p+1));
|
|
|
- p+=2;
|
|
|
- break;
|
|
|
- case PUSHWORD:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d PUSHWORD %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case PUSHFLOAT:
|
|
|
- {
|
|
|
- CodeFloat c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_float(c,p);
|
|
|
- printf ("%d PUSHFLOAT %f\n", n, c.f);
|
|
|
- }
|
|
|
- break;
|
|
|
- case PUSHSTRING:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d PUSHSTRING %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case PUSHFUNCTION:
|
|
|
- {
|
|
|
- CodeCode c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_code(c,p);
|
|
|
- printf ("%d PUSHFUNCTION %p\n", n, c.tf);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case PUSHLOCAL0: case PUSHLOCAL1: case PUSHLOCAL2: case PUSHLOCAL3:
|
|
|
- case PUSHLOCAL4: case PUSHLOCAL5: case PUSHLOCAL6: case PUSHLOCAL7:
|
|
|
- case PUSHLOCAL8: case PUSHLOCAL9:
|
|
|
- printf ("%d PUSHLOCAL%c\n", p-code, *p-PUSHLOCAL0+'0');
|
|
|
- p++;
|
|
|
- break;
|
|
|
- case PUSHLOCAL: printf ("%d PUSHLOCAL %d\n", p-code, *(p+1));
|
|
|
- p+=2;
|
|
|
- break;
|
|
|
- case PUSHGLOBAL:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d PUSHGLOBAL %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case PUSHINDEXED: printf ("%d PUSHINDEXED\n", (p++)-code); break;
|
|
|
- case STORELOCAL0: case STORELOCAL1: case STORELOCAL2: case STORELOCAL3:
|
|
|
- case STORELOCAL4: case STORELOCAL5: case STORELOCAL6: case STORELOCAL7:
|
|
|
- case STORELOCAL8: case STORELOCAL9:
|
|
|
- printf ("%d STORELOCAL%c\n", p-code, *p-STORELOCAL0+'0');
|
|
|
- p++;
|
|
|
- break;
|
|
|
- case STORELOCAL:
|
|
|
- printf ("%d STORELOCAL %d\n", p-code, *(p+1));
|
|
|
- p+=2;
|
|
|
- break;
|
|
|
- case STOREGLOBAL:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d STOREGLOBAL %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case PUSHSELF:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d PUSHSELF %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case STOREINDEXED0: printf ("%d STOREINDEXED0\n", (p++)-code); break;
|
|
|
- case STOREINDEXED: printf ("%d STOREINDEXED %d\n", p-code, *(p+1));
|
|
|
- p+=2;
|
|
|
- break;
|
|
|
- case STORELIST0:
|
|
|
- printf("%d STORELIST0 %d\n", p-code, *(p+1));
|
|
|
- p+=2+;
|
|
|
- break;
|
|
|
- case STORELIST:
|
|
|
- printf("%d STORELIST %d %d\n", p-code, *(p+1), *(p+2));
|
|
|
- p+=3;
|
|
|
- break;
|
|
|
- case STORERECORD:
|
|
|
- printf("%d STORERECORD %d\n", p-code, *(p+1));
|
|
|
- p += *p*sizeof(Word) + 2;
|
|
|
- break;
|
|
|
- case ADJUST0: printf ("%d ADJUST0\n", (p++)-code); break;
|
|
|
- case ADJUST:
|
|
|
- printf ("%d ADJUST %d\n", p-code, *(p+1));
|
|
|
- p+=2;
|
|
|
- break;
|
|
|
- case CREATEARRAY:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d CREATEARRAY %d\n", n, c.w);
|
|
|
- break;
|
|
|
- }
|
|
|
- case EQOP: printf ("%d EQOP\n", (p++)-code); break;
|
|
|
- case LTOP: printf ("%d LTOP\n", (p++)-code); break;
|
|
|
- case LEOP: printf ("%d LEOP\n", (p++)-code); break;
|
|
|
- case ADDOP: printf ("%d ADDOP\n", (p++)-code); break;
|
|
|
- case SUBOP: printf ("%d SUBOP\n", (p++)-code); break;
|
|
|
- case MULTOP: printf ("%d MULTOP\n", (p++)-code); break;
|
|
|
- case DIVOP: printf ("%d DIVOP\n", (p++)-code); break;
|
|
|
- case POWOP: printf ("%d POWOP\n", (p++)-code); break;
|
|
|
- case CONCOP: printf ("%d CONCOP\n", (p++)-code); break;
|
|
|
- case MINUSOP: printf ("%d MINUSOP\n", (p++)-code); break;
|
|
|
- case NOTOP: printf ("%d NOTOP\n", (p++)-code); break;
|
|
|
- case ONTJMP:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d ONTJMP %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case ONFJMP:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d ONFJMP %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case JMP:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d JMP %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case UPJMP:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d UPJMP %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case IFFJMP:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d IFFJMP %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case IFFUPJMP:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d IFFUPJMP %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
- case POP: printf ("%d POP\n", (p++)-code); break;
|
|
|
- case CALLFUNC:
|
|
|
- printf ("%d CALLFUNC %d %d\n", p-code, *(p+1), *(p+2));
|
|
|
- p+=3;
|
|
|
- break;
|
|
|
- case RETCODE0: printf ("%d RETCODE0\n", (p++)-code); break;
|
|
|
- case RETCODE:
|
|
|
- printf ("%d RETCODE %d\n", p-code, *(p+1));
|
|
|
- p+=2;
|
|
|
- break;
|
|
|
- case SETLINE:
|
|
|
- {
|
|
|
- CodeWord c;
|
|
|
- int n = p-code;
|
|
|
- p++;
|
|
|
- get_word(c,p);
|
|
|
- printf ("%d SETLINE %d\n", n, c.w);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- default: printf ("%d Cannot happen: code %d\n", p-code, *p));
|
|
|
- p+=1;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|