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 assembler file format


The entire format is line based. A line can contain a label, an instruction,
a label and an instruction or a directive. An additional comment separated by
";" is allowed at the end of every line.


begin of new module
-------------------

"!module" <name>

with <name> being enclosed in "


instruction lines
-----------------

3 formats are allowed

<label>:

<instruction> <parameter 1> ... <parameter n>

<label>: <instruction> <parameter 1> ... <parameter n>

with <label> = "[A-Za-z][A-Za-Z0-9_]*"

For a list of instructions with their parameters, see "nips_asm_instr.pl".
The parameters may be fixed text or be of one of the following types:

!const?: a constant value, i.e. a number
!reg: some register "r0" ... "r7"
!addr: a relative address, i.e. a label name
!address: an absolute address, i.e. a label name


flags (of bytecode addresses)
-----------------------------

"!flags" "progress"? "accept"?

"!flags_addr" <address> "progress"? "accept"?

with <address> of format "0x[0-9A-Fa-f]+"

marks the current / the specified address with the specified flags


string (for the string table)
-----------------------------

"!string" <index> <text>

<index> is used in the PRINT* commands.
<text> must be enclosed in ".

source location information
---------------------------

"!srcloc" <line> <column>

"!srcloc_addr" <address> <line> <column>

with <address> of format "0x[0-9A-Fa-f]+"
with <line> and <column> being numbers

specifies the location in the source code
  corresponding to the current / the specified address


structure information
---------------------

"!strinf" "(begin|end)" <type> <name>?

"!strinf_addr" <address> "(begin|end)" <type> <name>?

with <address> of format "0x[0-9A-Fa-f]+"
with <type> and <name> of format "[A-Za-z]+"

specifies the begin / end of some structure of <type> in the source code
  at the current / the specified address

