|
|
|
# ASM SYNTAX
|
|
|
|
|
|
|
|
Grammar is described via
|
|
|
|
[McKeeman Form](https://www.crockford.com/mckeeman.html).
|
|
|
|
|
|
|
|
Instruction operands order resembles Intel syntax.
|
|
|
|
|
|
|
|
`digit(min, max)` is a representation of binary, octal,
|
|
|
|
decimal or hexadecimal integer in range `[min, max]`.
|
|
|
|
I don't want to describe grammar for integers because
|
|
|
|
it does not seem like a trivial task. Sue me.
|
|
|
|
|
|
|
|
```
|
|
|
|
asm
|
|
|
|
expressions
|
|
|
|
|
|
|
|
expressions
|
|
|
|
expression
|
|
|
|
expression '\n' expressions
|
|
|
|
|
|
|
|
expression
|
|
|
|
instruction
|
|
|
|
byte-literal
|
|
|
|
|
|
|
|
byte-literal
|
|
|
|
'BYTE' digit(0, 255)
|
|
|
|
|
|
|
|
instruction
|
|
|
|
mov
|
|
|
|
jmp
|
|
|
|
'EQ'
|
|
|
|
'GT'
|
|
|
|
'LE'
|
|
|
|
'NOT'
|
|
|
|
shift
|
|
|
|
'INC' register
|
|
|
|
'DEC' register
|
|
|
|
'ADD'
|
|
|
|
'SUB'
|
|
|
|
'AND'
|
|
|
|
'OR'
|
|
|
|
'XOR'
|
|
|
|
'XNOR'
|
|
|
|
'COMPL' register
|
|
|
|
'SETC' carry
|
|
|
|
'NOP'
|
|
|
|
'HALT'
|
|
|
|
'CLOAD' register
|
|
|
|
'ZERO' register
|
|
|
|
'DIV'
|
|
|
|
'MUL'
|
|
|
|
'SWAP'
|
|
|
|
'PRTCHK'
|
|
|
|
'PRTRD'
|
|
|
|
'PRTWR'
|
|
|
|
'LOAD'
|
|
|
|
'STORE'
|
|
|
|
|
|
|
|
carry
|
|
|
|
'0'
|
|
|
|
'1'
|
|
|
|
|
|
|
|
mov
|
|
|
|
'MOV' register-half ',' digit(0, 15)
|
|
|
|
'MOV' register ',' register
|
|
|
|
|
|
|
|
jmp
|
|
|
|
'JMP' digit(-16, -1)
|
|
|
|
'JMP' digit(1, 16)
|
|
|
|
'JMPC' digit(-16, -1)
|
|
|
|
'JMPC' digit(1, 16)
|
|
|
|
'AJMP' register
|
|
|
|
'AJMPC' register
|
|
|
|
|
|
|
|
shift
|
|
|
|
'SHR'
|
|
|
|
'SHL'
|
|
|
|
'ROTR'
|
|
|
|
'ROTL'
|
|
|
|
'SHR' register ',' digit(0, 7)
|
|
|
|
'SHL' register ',' digit(0, 7)
|
|
|
|
'ROTR' register ',' digit(0, 7)
|
|
|
|
'ROTL' register ',' digit(0, 7)
|
|
|
|
|
|
|
|
register
|
|
|
|
'R0'
|
|
|
|
'R1'
|
|
|
|
|
|
|
|
register-half
|
|
|
|
register '.l'
|
|
|
|
register '.h'
|
|
|
|
```
|
|
|
|
|
|
|
|
Comments are introduced with `#`, like in Bash.
|
|
|
|
|
|
|
|
## Missing stuff
|
|
|
|
|
|
|
|
There are no labels.
|
|
|
|
We will probably implement them in future.
|
|
|
|
Or we will probably not.
|
|
|
|
|
|
|
|
## Sample program
|
|
|
|
|
|
|
|
```asm
|
|
|
|
MOV R0.l, 0xF
|
|
|
|
MOV R1.l, 0x3
|
|
|
|
ADD
|
|
|
|
MOV [0], R0
|
|
|
|
ZERO R0
|
|
|
|
HALT
|
|
|
|
```
|