Files
EC-Overture/definitions.asm
Elaina Claus a754ddd997 removed load for memory ops
in/out is better for this case at this time
2023-07-27 22:45:20 -04:00

71 lines
1.8 KiB
NASM

; see https://github.com/hlorenzi/customasm for documentation
#bankdef program
{
#bits 8
#addr 0x00
#size 0xFF
#outp 0x00
}
#subruledef register
{
0 => 0b000
1 => 0b001
2 => 0b010
3 => 0b011
4 => 0b100
5 => 0b101
}
#ruledef
{
imm6 {value} => 0b00 @ value`6
load r{src: register}, r{dst: register} => 0b10 @ src`3 @ dst`3
aload => 0b10 @ 0b110 @ 0b110
in r{r: register} => 0b10 @ 0b110 @ r
out r{r: register} => 0b10 @ r @ 0b110
}
#ruledef
{
or => 0b01 @ 0b000 @ 0b000
nand => 0b01 @ 0b000 @ 0b001
nor => 0b01 @ 0b000 @ 0b010
and => 0b01 @ 0b000 @ 0b011
add => 0b01 @ 0b000 @ 0b100
sub => 0b01 @ 0b000 @ 0b101
ALU_RES1 => 0b01 @ 0b000 @ 0b110
ALU_RES2 => 0b01 @ 0b000 @ 0b111
ALU_EXT1_RES0 => 0b01 @ 0b001 @ 0b000
ALU_EXT1_RES1 => 0b01 @ 0b001 @ 0b001
ALU_EXT1_RES2 => 0b01 @ 0b001 @ 0b010
ALU_EXT1_RES3 => 0b01 @ 0b001 @ 0b011
ALU_EXT1_RES4 => 0b01 @ 0b001 @ 0b100
ALU_EXT1_RES5 => 0b01 @ 0b001 @ 0b101
ALU_EXT1_RES6 => 0b01 @ 0b001 @ 0b110
ALU_EXT1_RES7 => 0b01 @ 0b001 @ 0b111
; and so on...
ALU_EXT7_RES1 => 0b01 @ 0b111 @ 0b000
}
; conditional jump block
#ruledef
{
bn => 0b11 @ 0b000 @ 0b000
beqz => 0b11 @ 0b000 @ 0b001
bltz => 0b11 @ 0b000 @ 0b010
blez => 0b11 @ 0b000 @ 0b011
ba => 0b11 @ 0b000 @ 0b100
bnez => 0b11 @ 0b000 @ 0b101
bgez => 0b11 @ 0b000 @ 0b110
bgtz => 0b11 @ 0b000 @ 0b111
}
; halt encodings
#ruledef
{
hcf => 0b10 @ 0b111 @ 0b111
halt => 0b10 @ 0b111 @ 0b111
}