diff --git a/vvp/codes.cc b/vvp/codes.cc index 6938596e7..476012285 100644 --- a/vvp/codes.cc +++ b/vvp/codes.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: codes.cc,v 1.1 2001/03/11 00:29:38 steve Exp $" +#ident "$Id: codes.cc,v 1.2 2001/03/11 23:06:49 steve Exp $" #endif # include "codes.h" @@ -95,7 +95,7 @@ void codespace_dump(FILE*fd) if (cop->opcode == &of_ASSIGN) { fprintf(fd, "%%assign 0x%u, %lu, %u\n", - cop->iptr, cop->number, cop->bit_idx); + cop->iptr, cop->bit_idx1, cop->bit_idx2); } else if (cop->opcode == &of_DELAY) { fprintf(fd, "%%delay %lu\n", cop->number); @@ -105,7 +105,7 @@ void codespace_dump(FILE*fd) } else if (cop->opcode == &of_SET) { fprintf(fd, "%%set 0x%lu, %u\n", - cop->iptr, cop->bit_idx); + cop->iptr, cop->bit_idx1); } else { fprintf(fd, "opcode %p\n", cop->opcode); @@ -116,6 +116,9 @@ void codespace_dump(FILE*fd) /* * $Log: codes.cc,v $ + * Revision 1.2 2001/03/11 23:06:49 steve + * Compact the vvp_code_s structure. + * * Revision 1.1 2001/03/11 00:29:38 steve * Add the vvp engine to cvs. * diff --git a/vvp/codes.h b/vvp/codes.h index f746439df..8e10c6b6d 100644 --- a/vvp/codes.h +++ b/vvp/codes.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: codes.h,v 1.1 2001/03/11 00:29:38 steve Exp $" +#ident "$Id: codes.h,v 1.2 2001/03/11 23:06:49 steve Exp $" #endif @@ -47,12 +47,14 @@ extern bool of_NOOP(vthread_t thr, vvp_code_t code); struct vvp_code_s { vvp_code_fun opcode; - unsigned short bit_idx; - unsigned long number; union { + unsigned number; vvp_ipoint_t iptr; vvp_cpoint_t cptr; }; + + unsigned short bit_idx1; + unsigned short bit_idx2; }; @@ -81,6 +83,9 @@ extern void codespace_dump(FILE*fd); /* * $Log: codes.h,v $ + * Revision 1.2 2001/03/11 23:06:49 steve + * Compact the vvp_code_s structure. + * * Revision 1.1 2001/03/11 00:29:38 steve * Add the vvp engine to cvs. * diff --git a/vvp/compile.cc b/vvp/compile.cc index 142c37175..7301ff0b2 100644 --- a/vvp/compile.cc +++ b/vvp/compile.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: compile.cc,v 1.2 2001/03/11 22:42:11 steve Exp $" +#ident "$Id: compile.cc,v 1.3 2001/03/11 23:06:49 steve Exp $" #endif # include "compile.h" @@ -42,10 +42,11 @@ enum operand_e { /* Place holder for unused operand */ OA_NONE, - /* The operand is a number, an immediate unsigned long integer */ + /* The operand is a number, an immediate unsigned integer */ OA_NUMBER, /* The operand is a thread bit index */ - OA_BIT, + OA_BIT1, + OA_BIT2, /* The operand is a pointer to code space */ OA_CODE_PTR, /* The operand is a variable or net pointer */ @@ -61,10 +62,10 @@ struct opcode_table_s { }; const static struct opcode_table_s opcode_table[] = { - { "%assign", of_ASSIGN, 3, {OA_FUNC_PTR, OA_NUMBER, OA_BIT} }, - { "%delay", of_DELAY, 1, {OA_NUMBER, OA_NONE, OA_NONE} }, - { "%end", of_END, 0, {OA_NONE, OA_NONE, OA_NONE} }, - { "%set", of_SET, 2, {OA_FUNC_PTR, OA_BIT, OA_NONE} }, + { "%assign", of_ASSIGN, 3, {OA_FUNC_PTR, OA_BIT1, OA_BIT2} }, + { "%delay", of_DELAY, 1, {OA_NUMBER, OA_NONE, OA_NONE} }, + { "%end", of_END, 0, {OA_NONE, OA_NONE, OA_NONE} }, + { "%set", of_SET, 2, {OA_FUNC_PTR, OA_BIT1, OA_NONE} }, { 0, of_NOOP, 0, {OA_NONE, OA_NONE, OA_NONE} } }; @@ -229,13 +230,22 @@ void compile_code(char*label, char*mnem, comp_operands_t opa) case OA_NONE: break; - case OA_BIT: + case OA_BIT1: if (opa->argv[idx].ltype != L_NUMB) { yyerror("operand format"); break; } - code->bit_idx = opa->argv[idx].numb; + code->bit_idx1 = opa->argv[idx].numb; + break; + + case OA_BIT2: + if (opa->argv[idx].ltype != L_NUMB) { + yyerror("operand format"); + break; + } + + code->bit_idx2 = opa->argv[idx].numb; break; case OA_CODE_PTR: @@ -381,6 +391,9 @@ void compile_dump(FILE*fd) /* * $Log: compile.cc,v $ + * Revision 1.3 2001/03/11 23:06:49 steve + * Compact the vvp_code_s structure. + * * Revision 1.2 2001/03/11 22:42:11 steve * Functor values and propagation. * diff --git a/vvp/vthread.cc b/vvp/vthread.cc index 34bad9d91..da74eb802 100644 --- a/vvp/vthread.cc +++ b/vvp/vthread.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: vthread.cc,v 1.2 2001/03/11 22:42:11 steve Exp $" +#ident "$Id: vthread.cc,v 1.3 2001/03/11 23:06:49 steve Exp $" #endif # include "vthread.h" @@ -64,14 +64,14 @@ bool of_ASSIGN(vthread_t thr, vvp_code_t cp) printf("thread %p: %%assign\n", thr); unsigned char bit_val = 3; - if ((cp->bit_idx & ~0x3) == 0x0) { - bit_val = cp->bit_idx&3; + if ((cp->bit_idx2 & ~0x3) == 0x0) { + bit_val = cp->bit_idx2&3; } else { printf("XXXX bit_idx out of range?\n"); } - schedule_assign(cp->iptr, bit_val, cp->number); + schedule_assign(cp->iptr, bit_val, cp->bit_idx1); return true; } @@ -95,11 +95,11 @@ bool of_NOOP(vthread_t thr, vvp_code_t cp) bool of_SET(vthread_t thr, vvp_code_t cp) { - printf("thread %p: %%set %lu, %u\n", thr, cp->iptr, cp->bit_idx); + printf("thread %p: %%set %u, %u\n", thr, cp->iptr, cp->bit_idx1); unsigned char bit_val = 3; - if ((cp->bit_idx & ~0x3) == 0x0) { - bit_val = cp->bit_idx&3; + if ((cp->bit_idx1 & ~0x3) == 0x0) { + bit_val = cp->bit_idx1&3; } else { printf("XXXX bit_idx out of range?\n"); @@ -112,6 +112,9 @@ bool of_SET(vthread_t thr, vvp_code_t cp) /* * $Log: vthread.cc,v $ + * Revision 1.3 2001/03/11 23:06:49 steve + * Compact the vvp_code_s structure. + * * Revision 1.2 2001/03/11 22:42:11 steve * Functor values and propagation. *