Alteracao para retirar codificacao de NOP's, substituindo

pela utilizacao de "union" com "chars" para codificar Word e float.
Observa-se que foram realizados testes antes da alteracao e constatou-se
que do bytecode anteriormente gerado, NOP representava de 10 a 13% do
total de bytes do codigo. Esta percentagem chegava ate' a 20% na caso
de descricao de metafile utilizando Lua.
This commit is contained in:
Waldemar Celes
1994-04-13 18:37:20 -03:00
parent 662e2fa5cc
commit 8ca980966c
3 changed files with 194 additions and 114 deletions

View File

@@ -1,6 +1,6 @@
/*
** TeCGraf - PUC-Rio
** $Id: opcode.h,v 1.2 1993/12/22 21:15:16 roberto Exp roberto $
** $Id: opcode.h,v 1.3 1994/02/13 20:35:53 roberto Exp celes $
*/
#ifndef opcode_h
@@ -20,9 +20,20 @@ typedef unsigned char Byte;
typedef unsigned short Word;
typedef union
{
struct {char c1; char c2;} m;
Word w;
} CodeWord;
typedef union
{
struct {char c1; char c2; char c3; char c4;} m;
float f;
} CodeFloat;
typedef enum
{
NOP,
PUSHNIL,
PUSH0, PUSH1, PUSH2,
PUSHBYTE,
@@ -129,6 +140,11 @@ typedef struct
#define s_fvalue(i) (fvalue(&s_object(i)))
#define s_uvalue(i) (uvalue(&s_object(i)))
#define get_word(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;}
#define get_float(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;\
code.m.c3 = *pc++; code.m.c4 = *pc++;}
/* Exported functions */
int lua_execute (Byte *pc);