Next: W-expressions, Previous: MIXAL directives, Up: MIXAL
The ADDRESS
, INDEX
and MOD
fields of a MIXAL
instruction can be expressions, formed by numbers, identifiers and
binary operators (+ - * / // :
). +
and -
can also
be used as unary operators. Operator precedence is from left to right:
there is no other operator precedence rule, and parentheses cannot be
used for grouping. A stand-alone asterisk denotes the current memory
location; thus, for instance,
4+2**
evaluates to 6 (4 plus 2) times the current memory location. White space is not allowed within expressions.
The special binary operator :
has the same meaning as in fspecs,
i.e.,
A:B = 8*A + B
while A//B
stands for the quotient of the ten-byte number A
00 00 00 00 00 (that is, A right-padded with 5 null bytes or, what amounts
to the same, multiplied by 64 to the fifth power) divided by
B
. Sample expressions are:
18-8*3 = 30 14/3 = 4 1+3:11 = 4:11 = 43 1//64 = (01 00 00 00 00 00)/(00 00 00 01 00) = (01 00 00 00 00)
Note that all MIXAL expressions evaluate to a MIX word (by definition).
All symbols appearing within an expression must be previously defined. Future
references are only allowed when appearing standalone (or modified by
an unary operator) in the ADDRESS
part of a MIXAL instruction,
e.g.
* OK: stand alone future reference STA -S1(1:5) * ERROR: future reference in expression LDX 2-S1 S1 LD1 2000