70 lines
3.5 KiB
C++
70 lines
3.5 KiB
C++
|
|
#include "kr1878.hpp"
|
|
|
|
const instruc_t Instructions[] =
|
|
{
|
|
|
|
{ "", 0 }, // Unknown Operation
|
|
|
|
{ "mov", CF_USE2|CF_CHG1 },
|
|
{ "cmp", CF_USE1|CF_USE2 }, // Compare
|
|
{ "add", CF_USE1|CF_USE2|CF_CHG1 }, // Addition
|
|
{ "sub", CF_USE1|CF_USE2|CF_CHG1 }, // Subtract
|
|
{ "and", CF_USE1|CF_USE2|CF_CHG1 }, // Logical AND
|
|
{ "or", CF_USE1|CF_USE2|CF_CHG1 }, // Logical Inclusive OR
|
|
{ "xor", CF_USE1|CF_USE2|CF_CHG1 }, // Logical Exclusive OR
|
|
|
|
{ "movl", CF_USE2|CF_CHG1 },
|
|
{ "cmpl", CF_USE1|CF_USE2 }, // Compare
|
|
{ "addl", CF_USE1|CF_USE2|CF_CHG1 }, // Addition
|
|
{ "subl", CF_USE1|CF_USE2|CF_CHG1 }, // Subtract
|
|
{ "bic", CF_USE1|CF_USE2|CF_CHG1 },
|
|
{ "bis", CF_USE1|CF_USE2|CF_CHG1 },
|
|
{ "btg", CF_USE1|CF_USE2|CF_CHG1 },
|
|
{ "btt", CF_USE1|CF_USE2|CF_CHG1 },
|
|
|
|
{ "swap", CF_USE1|CF_CHG1 },
|
|
{ "neg", CF_USE1|CF_CHG1 },
|
|
{ "not", CF_USE1|CF_CHG1 },
|
|
{ "shl", CF_USE1|CF_CHG1 }, // Shift Left
|
|
{ "shr", CF_USE1|CF_CHG1 }, // Shift Right
|
|
{ "shra", CF_USE1|CF_CHG1 }, // Arithmetic Shift Right
|
|
{ "rlc", CF_USE1|CF_CHG1 }, // Rotate Left
|
|
{ "rrc", CF_USE1|CF_CHG1 }, // Rotate Right
|
|
{ "adc", CF_USE1|CF_CHG1 }, // Add with Carry
|
|
{ "sbc", CF_USE1|CF_CHG1 }, // Subtract with Carry
|
|
|
|
{ "ldr", CF_USE2|CF_CHG1 },
|
|
{ "mtpr", CF_USE2|CF_CHG1 },
|
|
{ "mfpr", CF_USE2|CF_CHG1 },
|
|
{ "push", CF_USE1 },
|
|
{ "pop", CF_CHG1 },
|
|
{ "sst", CF_USE1 },
|
|
{ "cst", CF_USE1 },
|
|
{ "tof", 0 },
|
|
{ "tdc", 0 },
|
|
|
|
{ "jmp", CF_USE1|CF_STOP|CF_JUMP }, // Jump
|
|
{ "jsr", CF_USE1|CF_CALL }, // Jump to Subroutine
|
|
{ "jnz", CF_USE1|CF_JUMP }, // Jump
|
|
{ "jz", CF_USE1|CF_JUMP }, // Jump
|
|
{ "jns", CF_USE1|CF_JUMP }, // Jump
|
|
{ "js", CF_USE1|CF_JUMP }, // Jump
|
|
{ "jnc", CF_USE1|CF_JUMP }, // Jump
|
|
{ "jc", CF_USE1|CF_JUMP }, // Jump
|
|
{ "ijmp", CF_STOP }, // Jump
|
|
{ "ijsr", CF_STOP }, // Jump to Subroutine
|
|
{ "rts", CF_STOP }, // Return from Subroutine
|
|
{ "rtsc", CF_USE1|CF_STOP }, // Return from Subroutine
|
|
{ "rti", CF_STOP }, // Return from Interrupt
|
|
|
|
{ "nop", 0 }, // No Operation
|
|
{ "wait", 0 },
|
|
{ "stop", 0 },
|
|
{ "reset", 0 },
|
|
{ "sksp", 0 },
|
|
|
|
};
|
|
|
|
CASSERT(qnumber(Instructions) == KR1878_last);
|