diff --git a/src/instructions.c b/src/instructions.c index e69de29..94399d9 100644 --- a/src/instructions.c +++ b/src/instructions.c @@ -0,0 +1,135 @@ +#include +#include +#include +#include +#include "instructions.h" + +int GetInstruction(shcommand_t command){ + //Data Transfer Instructions + if(command.n1 == 0x6 && command.n4 == 0x3){ + return MOV_R_R; + } + else if(command.n1 == 0xE){ + return MOV_B_R; + } + else if(command.b1 == 0xC7){ + return MOVA_PC_R0; + } + else if(command.n1 == 0x9){ + return MOVW_PC_R; + } + else if(command.n1 == 0xD){ + return MOVL_PC_R; + } + else if(command.n1 == 0x6 && command.n4 == 0x0){ + return MOVB_aR_R; + } + else if(command.n1 == 0x6 && command.n4 == 0x1){ + return MOVW_aR_R; + } + else if(command.n1 == 0x6 && command.n4 == 0x2){ + return MOVL_aR_R; + } + else if(command.n1 == 0x2 && command.n4 == 0x0){ + return MOVB_R_aR; + } + else if(command.n1 == 0x2 && command.n4 == 0x1){ + return MOVW_R_aR; + } + else if(command.n1 == 0x2 && command.n4 == 0x2){ + return MOVL_R_aR; + } + else if(command.n1 == 0x6 && command.n4 == 0x4){ + return MOVB_aRp_R; + } + else if(command.n1 == 0x6 && command.n4 == 0x5){ + return MOVW_aRp_R; + } + else if(command.n1 == 0x6 && command.n4 == 0x6){ + return MOVL_aRp_R; + } + else if(command.n1 == 0x2 && command.n4 == 0x4){ + return MOVB_R_amR; + } + else if(command.n1 == 0x2 && command.n4 == 0x5){ + return MOVW_R_amR; + } + else if(command.n1 == 0x2 && command.n4 == 0x6){ + return MOVL_R_amR; + } + else if(command.b1 == 0x84){ + return MOVB_PCR_R0; + } + else if(command.b1 == 0x84){ + return MOVW_PCR_R0; + } + else if(command.n1 == 0x5){ + return MOVL_PCR_R; + } + else if(command.b1 == 0x81){ + return MOVW_R0_PCR; + } + else if(command.n1 == 0x1){ + return MOVL_R_PCR; + } + else if(command.n1 == 0x0 && command.n4 == 0xC){ + return MOVB_R0R_R; + } + else if(command.n1 == 0x0 && command.n4 == 0xD){ + return MOVW_R0R_R; + } + else if(command.n1 == 0x0 && command.n4 == 0xE){ + return MOVL_R0R_R; + } + else if(command.n1 == 0x0 && command.n4 == 0x4){ + return MOVB_R_R0R; + } + else if(command.n1 == 0x0 && command.n4 == 0x5){ + return MOVW_R_R0R; + } + else if(command.n1 == 0x0 && command.n4 == 0x6){ + return MOVL_R_R0R; + } + else if(command.b1 == 0xC4){ + return MOVB_PCGBR_R0; + } + else if(command.b1 == 0xC5){ + return MOVW_PCGBR_R0; + } + else if(command.b1 == 0xC6){ + return MOVL_PCGBR_R0; + } + else if(command.b1 == 0xC0){ + return MOVB_R0_PCGBR; + } + else if(command.b1 == 0xC1){ + return MOVW_R0_PCGBR; + } + else if(command.b1 == 0xC2){ + return MOVL_R0_PCGBR; + } + else if(command.n1 == 0x0 && command.b2 == 0x73){ + return MOVCOL_R0_aR; + } + else if(command.n1 == 0x0 && command.b2 == 0x63){ + return MOVLIL_aR_R0; + } + else if(command.n1 == 0x4 && command.b2 == 0xA9){ + return MOVUAL_aR_R0; + } + else if(command.n1 == 0x4 && command.b2 == 0xE9){ + return MOVUAL_aRp_R0; + } + else if(command.n1 == 0x0 && command.b2 == 0x29){ + return MOVT_R; + } + else if(command.n1 == 0x6 && command.n4 == 0x8){ + return SWAPB_R_R; + } + else if(command.n1 == 0x6 && command.n4 == 0x9){ + return SWAPW_R_R; + } + else if(command.n1 == 0x2 && command.n4 == 0xD){ + return XTRCT_R_R; + } +}