spot/iface/nips/nips_vm/bytecode_format.txt
Guillaume Sadegh bc5f13bb4e NIPS VM added to the SPOT distribution.
2008-05-29  Guillaume SADEGH  <sadegh@lrde.epita.fr>

	* iface/nips/nips.cc, iface/nips/nips.hh, iface/nips/common.cc,
	iface/nips/common.hh, iface/nips/Makefile.am: TGBA implementation
	with the NIPS library.
	* iface/nips/emptiness_check.cc: Emptiness check on a Promela
	interface.
	* iface/nips/dottynips.cc: Dot printer on the NIPS interface.
	* iface/nips/compile.sh: Add. Wrapper around nips compiler to
	compile Promela to NIPS bytecode.
	* iface/nips/nips_vm,iface/nips/nips_vm/bytecode.h,
	iface/nips/nips_vm/ChangeLog, iface/nips/nips_vm/COPYING,
	iface/nips/nips_vm/hashtab.c, iface/nips/nips_vm/hashtab.h,
	iface/nips/nips_vm/INSTALL, iface/nips/nips_vm/instr.c,
	iface/nips/nips_vm/instr.h, iface/nips/nips_vm/instr_step.c,
	iface/nips/nips_vm/instr_step.h,
	iface/nips/nips_vm/instr_tools.c,
	iface/nips/nips_vm/instr_tools.h,
	iface/nips/nips_vm/instr_wrap.c,
	iface/nips/nips_vm/instr_wrap.h,
	iface/nips/nips_vm/interactive.c,
	iface/nips/nips_vm/interactive.h, iface/nips/nips_vm/main.c,
	iface/nips/nips_vm/Makefile, iface/nips/nips_vm/Makefile.am,
	iface/nips/nips_vm/nips_asm_help.pl,
	iface/nips/nips_vm/nips_asm_instr.pl,
	iface/nips/nips_vm/nips_asm.pl,
	iface/nips/nips_vm/nips_disasm.pl, iface/nips/nips_vm/nipsvm.c,
	iface/nips/nips_vm/nipsvm.h, iface/nips/nips_vm/README,
	iface/nips/nips_vm/rt_err.c, iface/nips/nips_vm/rt_err.h,
	iface/nips/nips_vm/search.c, iface/nips/nips_vm/search.h,
	iface/nips/nips_vm/split.c, iface/nips/nips_vm/split.h,
	iface/nips/nips_vm/state.c, iface/nips/nips_vm/state.h,
	iface/nips/nips_vm/state_inline.h,
	iface/nips/nips_vm/state_parts.c,
	iface/nips/nips_vm/state_parts.h, iface/nips/nips_vm/timeval.h,
	iface/nips/nips_vm/tools.h: NIPS VM added to the SPOT
	distribution.
	* configure.ac, iface/Makefile.am: Build system updated for the
	NIPS front-end.
2008-05-30 13:22:00 +02:00

103 lines
3.2 KiB
Text

NIPS - New Implementation of Promela Semantics
Copyright (C) 2005: Stefan Schuermans <stefan@schuermans.info>
Michael Weber <michaelw@i2.informatik.rwth-aachen.de>
Lehrstuhl fuer Informatik II, RWTH Aachen
Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
specification of the bytecode file format
bytecode file:
<file header>
<section 0>
...
<section sec_cnt-1>
file header:
"NIPS v1a"
sec_cnt: uint16_t, big-endian, number of sections in file
section:
sec_type: 4 uint8_t, ASCII, type of section
sec_sz: uint32_t, big-endian, size of section's content
section content: sec_sz uint8_t
section: module
sec_type: "mod "
sec_sz: uint32_t, big-endian, size of module section's content
<string module_name>
part_cnt: uint16_t, big-endian, number of parts in module
<part 0>
...
<part part_cnt-1>
part
part_type: 4 uint8_t, ASCII, type of part
part_sz: uint32_t, big-endian, size of part's content
part content: part_sz uint8_t
part: module flags
part_type: "modf"
part_sz: uint32_t, big-endian, always 4
mod_flags: uint32_t, big-endian, some flags describing properties of the module
0x00000001 = monitor exists
part: bytecode
part_type: "bc "
part_sz: uint32_t, big-endian, size of bytecode
bytecode: part_sz uint8_t, the bytecode
part: flag table
part_type: "flag"
part_sz: uint32_t, big-endian, size of entire flag table
flag_cnt: uint16_t, big-endian, number of flag entries in this table
the entries in this table have to be sorted ascending by their addresses
<flag 0>
...
<flag flag_cnt-1>
flag:
addr: uint32_t, big-endian, address for which flags are given
flags: uint32_t, the flags for this address
0x00000001 = progress state
0x00000002 = accept state
part: string table
part_type: "str "
part_sz: uint32_t, big-endian, size of entire string table
str_cnt: uint16_t, big-endian, number of strings in this table
<string 0>
...
<string str_cnt-1>
string:
str_sz: uint16_t, big-endian, size of string (including terminating zero)
str: str_sz uint8_t, ASCII, zero-terminated string
part: source location table
part_type: "sloc"
part_sz: uint32_t, big-endian, size of entire source location table
sloc_cnt: uint16_t, big-endian, number of source locations in this table
the entries in this table have to be sorted ascending by their addresses
<srcloc 0>
...
<srcloc sloc_cnt-1>
srcloc:
addr: uint32_t, big-endian, address whose source location is to be specified
line: uint32_t, big-endian, line number
col: uint32_t, big-endian, column number
part: structure information table
part_type: "stin"
part_sz: uint32_t, big-endian, size of entire structure information table
stin_cnt: uint16_t, big-endian, number of structure information entries in this table
the entries in this table have to be sorted ascending by their addresses
<strinf 0>
...
<strinf stin_cnt-1>
strinf:
addr: uint32_t, big-endian, address for which some structure information is given
code: uint8_t, 0x00 = start of some structure, 0x01 = end of some structure, 0x02 = middle in some structure
<string type>
<string name>