1.7 KiB
1.7 KiB
Design
Parsing
- First we tokenize the input (syntax check)
- Then we interpret the input (semantics check)
- Then we execute the input
Notation
[operation][number type], e.g.divifor divide (div) integer%[register]for addressing registers$[value]for using literals/immediate values;for end of statement (mandatory)[label]:for labels#[text]for comments: any text is ignored till a newline (\n) is found- Elements must be separated by whitespace character
- Good:
add $2 $5 %A; - Bad:
add $2$5%A;
- Good:
Examples
Divide register A by 5 and store the result in register A:
divi %A $5 %A;
Reserved symbols
The following whitespace characters are used to separate symbols:
- space (
) - tab (
\t) - return carriage (
\r) - newline (
\n)
The following characters are used as identifiers:
- dollar (
$) - percentage (
%) - colon (
:) - semicolon (
;) - hash (
#)
All operands are reserved keywords and can therefore NOT be used as labels.
Operands
addiadd the first to the second argument and store the result in the third argumentsubisubtract the first from the second argument and store the result in the third argumentdividivide the first by the second argument and store the result in the third argumentmulimultiply the first by the second argument and store the result in the third argumentshlishift left the first argument by the number of positions given by the second argument and store the result in the third argumentshrishift right the first argument by the number of positions given by the second argument and store the result in the third argumentjmpjump to the label given by the first argument