Files
2021-10-31 21:20:46 +02:00

91 lines
5.8 KiB
C++

/*
* Disassembler for Samsung SAM8 processors
*/
#include "sam8.hpp"
const instruc_t Instructions[] =
{
{ "", 0 }, // Unknown Operation
{ "adc", CF_USE1|CF_USE2|CF_CHG1 }, // ADC dst, src
{ "add", CF_USE1|CF_USE2|CF_CHG1 }, // ADD dst, src
{ "and", CF_USE1|CF_USE2|CF_CHG1 }, // AND dst, src
{ "band", CF_USE1|CF_USE2|CF_CHG1 }, // BAND dst, src.b BAND dst.b, src
{ "bcp", CF_USE1|CF_USE2 }, // BCP dst, src.b
{ "bitc", CF_USE1|CF_CHG1 }, // BITC dst.b
{ "bitr", CF_CHG1 }, // BITR dst.b
{ "bits", CF_CHG1 }, // BITS dst.b
{ "bor", CF_USE1|CF_USE2|CF_CHG1 }, // BOR dst, src.b BOR dst.b, src
{ "btjrf", CF_USE1|CF_USE2|CF_JUMP }, // BTJRF dst, src.b
{ "btjrt", CF_USE1|CF_USE2|CF_JUMP }, // BTJRT dst, src.b
{ "bxor", CF_USE1|CF_USE2|CF_CHG1 }, // BXOR dst, src.b BXOR dst.b, src
{ "call", CF_USE1|CF_CALL }, // CALL dst
{ "ccf", 0 }, // CCF
{ "clr", CF_CHG1 }, // CLR dst
{ "com", CF_USE1|CF_CHG1 }, // COM dst
{ "cp", CF_USE1|CF_USE2 }, // CP dst, src
{ "cpije", CF_USE1|CF_USE2|CF_USE3|CF_CHG2|CF_JUMP }, // CPIJE dst, src, RA
{ "cpijne", CF_USE1|CF_USE2|CF_USE3|CF_CHG2|CF_JUMP }, // CPIJNE dst, src, RA
{ "da", CF_USE1|CF_CHG1 }, // DA dst
{ "dec", CF_USE1|CF_CHG1 }, // DEC dst
{ "decw", CF_USE1|CF_CHG1 }, // DECW dst
{ "di", 0 }, // DI
{ "div", CF_USE1|CF_USE2|CF_CHG1 }, // DIV dst, src.b
{ "djnz", CF_USE1|CF_USE2|CF_CHG1|CF_JUMP }, // DJNZ r, dst
{ "ei", 0 }, // EI
{ "enter", 0 }, // ENTER
{ "exit", CF_STOP }, // EXIT
{ "idle", 0 }, // IDLE
{ "inc", CF_USE1|CF_CHG1 }, // INC dst
{ "incw", CF_USE1|CF_CHG1 }, // INCW dst
{ "iret", 0 }, // IRET
{ "jp", CF_USE1|CF_JUMP }, // JP cc, dst
{ "jr", CF_USE1|CF_JUMP }, // JR cc, dst
{ "ld", CF_USE1|CF_USE2|CF_CHG1 }, // LD dst, src
{ "ldb", CF_USE1|CF_USE2|CF_CHG1 }, // LDB dst, src.b LDB dst.b, src
{ "ldc", CF_USE1|CF_USE2|CF_CHG1 }, // LDC dst, src
{ "lde", CF_USE1|CF_USE2|CF_CHG1 }, // LDE dst, src
{ "ldcd", CF_USE1|CF_USE2|CF_CHG1 }, // LDCD dst, src
{ "lded", CF_USE1|CF_USE2|CF_CHG1 }, // LDED dst, src
{ "ldci", CF_USE1|CF_USE2|CF_CHG1 }, // LDCI dst, src
{ "ldei", CF_USE1|CF_USE2|CF_CHG1 }, // LDEI dst, src
{ "ldcpd", CF_USE1|CF_USE2|CF_CHG1 }, // LDCPD dst, src
{ "ldepd", CF_USE1|CF_USE2|CF_CHG1 }, // LDEPD dst, src
{ "ldcpi", CF_USE1|CF_USE2|CF_CHG1 }, // LDCPI dst, src
{ "ldepi", CF_USE1|CF_USE2|CF_CHG1 }, // LDEPI dst, src
{ "ldw", CF_USE1|CF_USE2|CF_CHG1 }, // LDW dst, src
{ "mult", CF_USE1|CF_USE2|CF_CHG1 }, // MULT dst, src
{ "next", CF_STOP }, // NEXT
{ "nop", 0 }, // NOP
{ "or", CF_USE1|CF_USE2|CF_CHG1 }, // OR dst, src
{ "pop", CF_CHG1 }, // POP dst
{ "popud", CF_USE2|CF_CHG1|CF_CHG2 }, // POPUD dst, src
{ "popui", CF_USE2|CF_CHG1|CF_CHG2 }, // POPUI dst, src
{ "push", CF_USE1 }, // PUSH dst
{ "pushud", CF_USE1|CF_USE2|CF_CHG1 }, // PUSHUD dst, src
{ "pushui", CF_USE1|CF_USE2|CF_CHG1 }, // PUSHUI dst, src
{ "rcf", 0 }, // RCF
{ "ret", CF_STOP }, // RET
{ "rl", CF_USE1|CF_CHG1|CF_SHFT }, // RL dst
{ "rlc", CF_USE1|CF_CHG1|CF_SHFT }, // RLC dst
{ "rr", CF_USE1|CF_CHG1|CF_SHFT }, // RR dst
{ "rrc", CF_USE1|CF_CHG1|CF_SHFT }, // RRC dst
{ "sb0", 0 }, // SB0
{ "sb1", 0 }, // SB1
{ "sbc", CF_USE1|CF_USE2|CF_CHG1 }, // SBC dst, src
{ "scf", 0 }, // SCF
{ "sra", CF_USE1|CF_CHG1|CF_SHFT }, // SRA dst
{ "srp", CF_USE1 }, // SRP src
{ "srp0", CF_USE1 }, // SRP0 src
{ "srp1", CF_USE1 }, // SRP1 src
{ "stop", 0 }, // STOP
{ "sub", CF_USE1|CF_USE2|CF_CHG1 }, // SUB dst, src
{ "swap", CF_USE1|CF_CHG1 }, // SWAP dst
{ "tcm", CF_USE1|CF_USE2 }, // TCM dst, src
{ "tm", CF_USE1|CF_USE2 }, // TM dst, src
{ "wfi", 0 }, // WFI
{ "xor", CF_USE1|CF_USE2|CF_CHG1 } // XOR dst, src
};
CASSERT(qnumber(Instructions) == SAM8_last);