dsp-asm/grammar.txt

102 lines
2.4 KiB
Plaintext

alu → and | or | xor | add | sub | ad2 | sr | rr | sl | rl | rl8
xy_src → "mc0" | "mc1" | "mc2" | "mc3"
| "m0" | "m1" | "m2" | "m3"
mov_ram_x → "mov" xy_src "," "x"
mov_mul_p → "mov" "mul" "," "p"
mov_ram_p → "mov" xy_src "," "p"
x_bus → mov_ram_x | mov_mul_p | mov_ram_p
mov_ram_y → "mov" xy_src "," "y"
clr_a → "clr" "a"
mov_alu_a → "mov" "alu" "," "a"
mov_ram_a → "mov" xy_src "," "a"
y_bus → mov_ram_y | clr_a | mpv_alu_a | mov_ram_a
d1_dest → "rx" | "pl"
| "ra0" | "wa0"
| "lop" | "top"
| "ct0" | "ct1" | "ct2" | "ct3"
d1_src → "mc0" | "mc1" | "mc2" | "mc3"
| "m0" | "m1" | "m2" | "m3"
| "alh" | "all"
mov_imm_d1 → "mov" simm8 "," d1_dest
mov_ram_d1 → "mov" d1_src "," d1_dest
d1_bus → mov_imm_d1 → mov_ram_d1
op → ( alu | x_bus | y_bus | d1_bus ) +
load_dest → "mc0" | "mc1" | "mc2" | "mc3"
| "rx" | "pl"
| "ra0" | "wa0"
| "lop" | "pc"
load_cond → "z" | "nz"
| "s" | "ns"
| "c" | "nc"
| "t0" | "nt0"
| "zs" | "nzs"
mvi → "mvi" uimm25 load_dest
mvi_cond → "mvi" uimm19 load_dest load_cond
load → mvi | mvi_cond
dma_ingress → "m0" | "m1" | "m2" | "m3"
| "prg"
dma_egress → "m0" | "m1" | "m2" | "m3"
add_mode = "0" | "1" | "2" | "4" | "8" | "16" | "32" | "64"
dma_dmah → ("dma" | "dmah") add_mode?
dma_length_ram → "m0" | "m1" | "m2" | "m3"
| "mc0" | "mc1" | "mc2" | "mc3"
dma_ingress_imm → dma_dmah "d0" "," dma_ingress "," simm8
dma_egress_imm → dma_dmah dma_egress "," "d0" "," simm8
dma_ingress_ram → dma_dmah "d0" "," dma_ingress "," dma_length_ram
dma_egress_ram → dma_dmah dma_egress "," "d0" "," dma_length_ram
dma → dma_ingress_imm | dma_egress_imm | dma_ingress_ram | dma_egress_ram
jump_cond → "z" | "nz"
| "s" | "ns"
| "c" | "nc"
| "t0" | "nt0"
| "zs" | "nzs"
jmp → "jmp" uimm8
jmp_cond → "jmp" jump_cond
jump → jmp | jmp_cond
loop → "btm" | "lps"
end → "end" | "endi"
instruction → "nop"
| op
| load
| dma
| jump
| loop
| end
assignment_statement → identifier "=" expression "\n"
label → identifier ":"
instruction_statement → label? instruction? "\n"
statement → assignment_statement
| instruction_statement