Support empty statements for hanging labels.
This commit is contained in:
parent
5769bbe15e
commit
ae1d5227de
10
vvp/codes.cc
10
vvp/codes.cc
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: codes.cc,v 1.5 2001/03/22 05:28:41 steve Exp $"
|
#ident "$Id: codes.cc,v 1.6 2001/04/01 06:40:44 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "codes.h"
|
# include "codes.h"
|
||||||
|
|
@ -74,6 +74,11 @@ vvp_cpoint_t codespace_allocate(void)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vvp_cpoint_t codespace_next(void)
|
||||||
|
{
|
||||||
|
return code_count;
|
||||||
|
}
|
||||||
|
|
||||||
vvp_code_t codespace_index(vvp_cpoint_t point)
|
vvp_code_t codespace_index(vvp_cpoint_t point)
|
||||||
{
|
{
|
||||||
assert(point < code_count);
|
assert(point < code_count);
|
||||||
|
|
@ -121,6 +126,9 @@ void codespace_dump(FILE*fd)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: codes.cc,v $
|
* $Log: codes.cc,v $
|
||||||
|
* Revision 1.6 2001/04/01 06:40:44 steve
|
||||||
|
* Support empty statements for hanging labels.
|
||||||
|
*
|
||||||
* Revision 1.5 2001/03/22 05:28:41 steve
|
* Revision 1.5 2001/03/22 05:28:41 steve
|
||||||
* Add code label forward references.
|
* Add code label forward references.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: codes.h,v 1.12 2001/04/01 06:12:13 steve Exp $"
|
#ident "$Id: codes.h,v 1.13 2001/04/01 06:40:44 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -87,6 +87,9 @@ extern void codespace_init(void);
|
||||||
*/
|
*/
|
||||||
extern vvp_cpoint_t codespace_allocate(void);
|
extern vvp_cpoint_t codespace_allocate(void);
|
||||||
|
|
||||||
|
extern vvp_cpoint_t codespace_next(void);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return a pointer to the indexed instruction in the codespace. The
|
* Return a pointer to the indexed instruction in the codespace. The
|
||||||
* ptr must be a value returned from codespace_allocate. The compiler
|
* ptr must be a value returned from codespace_allocate. The compiler
|
||||||
|
|
@ -100,6 +103,9 @@ extern void codespace_dump(FILE*fd);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: codes.h,v $
|
* $Log: codes.h,v $
|
||||||
|
* Revision 1.13 2001/04/01 06:40:44 steve
|
||||||
|
* Support empty statements for hanging labels.
|
||||||
|
*
|
||||||
* Revision 1.12 2001/04/01 06:12:13 steve
|
* Revision 1.12 2001/04/01 06:12:13 steve
|
||||||
* Add the bitwise %and instruction.
|
* Add the bitwise %and instruction.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: compile.cc,v 1.24 2001/04/01 06:12:13 steve Exp $"
|
#ident "$Id: compile.cc,v 1.25 2001/04/01 06:40:45 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "compile.h"
|
# include "compile.h"
|
||||||
|
|
@ -482,6 +482,17 @@ void compile_code(char*label, char*mnem, comp_operands_t opa)
|
||||||
free(mnem);
|
free(mnem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void compile_codelabel(char*label)
|
||||||
|
{
|
||||||
|
symbol_value_t val;
|
||||||
|
vvp_cpoint_t ptr = codespace_next();
|
||||||
|
|
||||||
|
val.num = ptr;
|
||||||
|
sym_set_value(sym_codespace, label, val);
|
||||||
|
|
||||||
|
free(label);
|
||||||
|
}
|
||||||
|
|
||||||
void compile_vpi_call(char*label, char*name, unsigned argc, vpiHandle*argv)
|
void compile_vpi_call(char*label, char*name, unsigned argc, vpiHandle*argv)
|
||||||
{
|
{
|
||||||
vvp_cpoint_t ptr = codespace_allocate();
|
vvp_cpoint_t ptr = codespace_allocate();
|
||||||
|
|
@ -696,6 +707,9 @@ void compile_dump(FILE*fd)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: compile.cc,v $
|
* $Log: compile.cc,v $
|
||||||
|
* Revision 1.25 2001/04/01 06:40:45 steve
|
||||||
|
* Support empty statements for hanging labels.
|
||||||
|
*
|
||||||
* Revision 1.24 2001/04/01 06:12:13 steve
|
* Revision 1.24 2001/04/01 06:12:13 steve
|
||||||
* Add the bitwise %and instruction.
|
* Add the bitwise %and instruction.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: compile.h,v 1.12 2001/03/29 03:46:36 steve Exp $"
|
#ident "$Id: compile.h,v 1.13 2001/04/01 06:40:45 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
|
|
@ -104,6 +104,7 @@ typedef struct comp_operands_s*comp_operands_t;
|
||||||
extern void compile_code(char*label, char*mnem, comp_operands_t opa);
|
extern void compile_code(char*label, char*mnem, comp_operands_t opa);
|
||||||
extern void compile_vpi_call(char*label, char*name,
|
extern void compile_vpi_call(char*label, char*name,
|
||||||
unsigned argc, vpiHandle*argv);
|
unsigned argc, vpiHandle*argv);
|
||||||
|
extern void compile_codelabel(char*label);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The parser uses these functions to compile .scope statements.
|
* The parser uses these functions to compile .scope statements.
|
||||||
|
|
@ -134,6 +135,9 @@ extern void compile_dump(FILE*fd);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: compile.h,v $
|
* $Log: compile.h,v $
|
||||||
|
* Revision 1.13 2001/04/01 06:40:45 steve
|
||||||
|
* Support empty statements for hanging labels.
|
||||||
|
*
|
||||||
* Revision 1.12 2001/03/29 03:46:36 steve
|
* Revision 1.12 2001/03/29 03:46:36 steve
|
||||||
* Support named events as mode 2 functors.
|
* Support named events as mode 2 functors.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
10
vvp/parse.y
10
vvp/parse.y
|
|
@ -19,7 +19,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#if !defined(WINNT)
|
#if !defined(WINNT)
|
||||||
#ident "$Id: parse.y,v 1.14 2001/03/29 03:46:36 steve Exp $"
|
#ident "$Id: parse.y,v 1.15 2001/04/01 06:40:45 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "parse_misc.h"
|
# include "parse_misc.h"
|
||||||
|
|
@ -123,9 +123,10 @@ statement
|
||||||
on the specific instruction. */
|
on the specific instruction. */
|
||||||
|
|
||||||
| label_opt T_INSTR operands_opt ';'
|
| label_opt T_INSTR operands_opt ';'
|
||||||
{ compile_code($1, $2, $3);
|
{ compile_code($1, $2, $3); }
|
||||||
}
|
|
||||||
|
|
||||||
|
| T_LABEL ';'
|
||||||
|
{ compile_codelabel($1); }
|
||||||
|
|
||||||
/* %vpi_call statements are instructions that have unusual operand
|
/* %vpi_call statements are instructions that have unusual operand
|
||||||
requirements so are handled by their own rules. */
|
requirements so are handled by their own rules. */
|
||||||
|
|
@ -307,6 +308,9 @@ int compile_design(const char*path)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: parse.y,v $
|
* $Log: parse.y,v $
|
||||||
|
* Revision 1.15 2001/04/01 06:40:45 steve
|
||||||
|
* Support empty statements for hanging labels.
|
||||||
|
*
|
||||||
* Revision 1.14 2001/03/29 03:46:36 steve
|
* Revision 1.14 2001/03/29 03:46:36 steve
|
||||||
* Support named events as mode 2 functors.
|
* Support named events as mode 2 functors.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue