test_disassembler :: IO ()
test_disassembler =
  let table = [
        (Mov (Register 12) (Register 14), "\xce\x2c"),
        (Cli, "\xf8\x94"),
        (Sei, "\x78\x94"),
        (Clc, "\x88\x94"),
        (Clh, "\xd8\x94"),
        (Cln, "\xa8\x94"),
        (Cls, "\xc8\x94"),
        (Clv, "\xb8\x94"),
        (Clz, "\x98\x94"),
        (Clt, "\xe8\x94"),
        (Sec, "\x08\x94"),
        (Seh, "\x58\x94"),
        (Sen, "\x28\x94"),
        (Ses, "\x48\x94"),
        (Sev, "\x38\x94"),
        (Sez, "\x18\x94"),
        (Set, "\x68\x94"),
        (Jmp 50, "\x0c\x94\x19\x00"),
        (Ijmp, "\x09\x94"),
        (Rjmp 50, "\x19\xc0"),
        (Add 10 15, "\xaf\x0c"),
        (Adc 10 15, "\xaf\x1c"),
        (Sub 10 15, "\x05\x18"),
        (Sbc 10 15, "\x05\x08"),
        (Andi 10 5, "\xa5\x70"),
        (Ldi 10 5, "\xa5\xe0"),
        (Cpi 10 5, "\xa5\x30"),
        (Ori 10 5, "\xa5\x60"),
        (Subi 10 5, "\xa0\x50"),
        (Sbci 10 5, "\xa5\x40"),
        (In 15 5, "\xf5\xb0"),
        (Out 5 15, "\xf5\xb8"),
        (Sbi 15 3, "\x03\x9a"),
        (Cbi 15 3, "\x03\x98"),
        (Sbic 15 3, "\x03\x99"),
        (Sbis 15 3, "\x03\x9b"),
        (Sbrc 15 3, "\xf3\xfc"),
        (Sbrs 15 3, "\xf3\xfe"),
        (Cpse 15 20, "\xf4\x12"),
        (Bld 15 3, "\x53\xf8"),
        (Bst 15 3, "\x53\xfa"),
        (Adiw (Reg16 RX), "\xd2\x96"),
        (Sbiw (mkReg16 24), "\x06\x97"),
        (Movw (mkReg16 16), "\x80\x01"),
        (Push 15, "\xff\x92"),
        (Pop 15, "\xff\x90"),
        (Brcc 50, "\xc8\xf4"),
        (Brcs 50, "\xc8\xf0"),
        (Brtc 50, "\xce\xf4"),
        (Brts 50, "\xce\xf0"),
        (Breq 50, "\xc9\xf0"),
        (Brne 50, "\xc9\xf4"),
        (Brlt 50, "\xcc\xf0"),
        (Brge 50, "\xcc\xf4"),
        (Brpl 50, "\xca\xf4"),
        (Brmi 50, "\xca\xf0"),
        (Cp 15 20, "\xf4\x16"),
        (Cpc 15 20, "\xf4\x06"),
        (Inc 15, "\xf3\x94"),
        (Dec 15, "\xfa\x94"),
        (Ldxp 15, "\xfd\x90"),
        (Ldxm 15, "\xfc\x90"),
        (Ldyp 15, "\xf9\x90"),
        (Ldym 15, "\xf8\x80"),
        (Ldzp 15, "\xf1\x90"),
        (Ldzm 15, "\xf0\x80"),
        (Lds 15 20, "\xf0\x90\x14\x00"),
        (Lddx 15 3, "\xfb\x80"),
        (Lddy 15 3, "\xfb\x80"),
        (Stxp 15, "\xfd\x92"),
        (Stxm 15, "\xfc\x92"),
        (Styp 15, "\xf9\x92"),
        (Sts 20 15, "\xf0\x92\x14\x00"),
        (Stdz 41 15, "\x01\xa7"),
        (Lpmzp 15, "\x05\x90"),
        (Call 1234, "\x0e\x94\x69\x02"),
        (Rcall 50, "\x0e\x94\x19\x00"),
        (Icall, "\x09\x95"),
        (Ret, "\x08\x95"),
        (Com 15, "\xf0\x94"),
        (Neg 15, "\xf1\x94"),
        (And 15 16, "\xf0\x22"),
        (Eor 15 16, "\xf0\x26"),
        (Or 15 16, "\xf0\x2a"),
        (Ror 15, "\xf7\x94"),
        (Lsr 15, "\xf6\x94"),
        (Lsl 15, "\x0f\x0c"),
        (Swap 15, "\xf2\x94"),
        (Mul 8 16, "\x80\x9e"),
        (Break, "\x98\x95"),
        (Reti, "\x18\x95"),
        (Nop, "\x00\x00")
        )


main :: IO ()
main = putStrLn "Test suite not yet implemented"
