The key part of the assembly language syntax is presented below in the form of
BNF productions:
Listing 11.1 Assembly language syntax
AssemblyProgram
: { { Label } (Code | Data) }
Code
: { AssemblyStatement }
Label
: < Identifier >
Data
: data Literal { , Literal } end
AssemblyStatement
// statement
Example
Mnemnonics
: skip
//
NOP
| stop
//
STOP
| trace
//
TRACE
| format ( 8 | 16 | 32 )
// format of next instructions
| Register := *Register
// Rj := *Ri
LD
| Register := Literal
// Rj := Const
LDA
| *Register := Register
// *Rj := Ri
ST
| Register := Register
// Rj := Ri
MOV
| Register += Register
// Rj += Ri
ADD
| Register -= Register
// Rj -= Ri
SUB
| Register >>= Register
// Rj >>= Ri
ASR
| Register <<= Register
// Rj <<= Ri
ASL
| Register |= Register
// Rj |= Ri
OR
| Register &= Register
// Rj &= Ri
AND
| Register ^= Register
// Rj ^= Ri
XOR
| Register <= Register
// Rj <= Ri
LSL
| Register >= Register
// Rj >= Ri
LSR
| Register ?= Register
// Rj ?= Ri
CND
| if Register goto Register // if Ri goto Rj
CBR
Register : R0 | R1 | … | R30 | R31
As an example of the assembly language code, let’s consider the following
simple sorting routine that accepts an array of integers together with its size, and
sorts the array elements in ascending order. The routine (written in the ERRIC
system language, see Sect. 11.4 below) is given just as an illustration: the next
listing demonstrates the equivalent program written in the assembly language.
168
11 Programming Languages for Safety-Critical Systems
Précédent

- 181/315

Suivant