2 Notation
represent an address which is offset by x words (4x bytes) from the address in
register. For example, in the specification of load non-local there is:
Areg′ ← word[Areg @ n]
Here, Areg is loaded with the contents of the word that is n words from the address
pointed to by Areg, i.e. the word at address Areg + 4n.
In all cases, if the given base address has the correct alignment then any offset used
will also give a correctly aligned address.
2.3 Operators used in the definitions
A full list of the operators used in the instruction definitions is given in Table 2.1.
Unless otherwise stated, all arithmetic is signed.
Symbol
Meaning
Unchecked (modulo) integer arithmetic
+
Signed integer add, subtract, multiply, divide and remainder. If the computation
−
overflows the result of the operation is truncated to the word length. If a divide
×
or remainder by zero occurs the result of the operation is undefined. No errors
/
are signalled. The operator ‘−’ is also used as a monadic operator.
rem
Signed comparison operators
<
Comparisons of signed integer values: ‘less than’, ‘greater than’, ‘less than or
>
equal’, ‘greater than or equal’, ‘equal’ and ‘not equal’.
≤
≥
=
≠
Bitwise operators
∼
∧
∨
⊗
>>
<<
>>arith
‘Not’, ‘and’, ‘or’, ‘exclusive or’, logical left and right shift and arithmetic right shift
operations on bits in words.
Boolean operators
not
Boolean combination in conditionals.
and
or
Table 2.1 Operators used in the instruction descriptions
Modulo operators
Arithmetic is done using modulo arithmetic — i.e. there is no checking for errors and, if
the calculation overflows, the result ‘wraps around’ the range of values representable
in the word length of the processor — e.g. adding 1 to the address at the top of the
11/205
®