From 8ca980966ca383c120dadb2c6e6a0850d1bfff58 Mon Sep 17 00:00:00 2001 From: Waldemar Celes Date: Wed, 13 Apr 1994 18:37:20 -0300 Subject: 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. --- opcode.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'opcode.h') diff --git a/opcode.h b/opcode.h index 8139f9c8..f48e50fd 100644 --- a/opcode.h +++ b/opcode.h @@ -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); -- cgit v1.2.3-55-g6feb