2013-12-19 17:10:14 +00:00
|
|
|
#pragma once
|
|
|
|
#include "types.h"
|
|
|
|
#include "../sh4_interpreter.h"
|
|
|
|
|
|
|
|
/* Opcodes :) */
|
|
|
|
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc SR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0000_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc GBR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0001_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc VBR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0010_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc SSR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0011_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc SGR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0011_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc SPC,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0100_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc R0_BANK,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_1mmm_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//braf <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0010_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//bsrf <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0000_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//movca.l R0, @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_1100_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ocbi @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_1001_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ocbp @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_1010_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ocbwb @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_1011_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//pref @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_1000_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.b <REG_M>,@(R0,<REG_N>)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_0100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.w <REG_M>,@(R0,<REG_N>)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_0101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.l <REG_M>,@(R0,<REG_N>)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mul.l <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//clrmac
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0010_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//clrs
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0100_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//clrt
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0000_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldtlb
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0011_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sets
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0101_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sett
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0001_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//div0u
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0001_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//movt <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0010_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//nop
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0000_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts FPUL,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0101_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts FPSCR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0110_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc GBR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_1111_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts MACH,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0000_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts MACL,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0001_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts PR,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_0010_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//rte
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0010_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//rts
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0000_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sleep
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_0000_0001_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.b @(R0,<REG_M>),<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_1100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.w @(R0,<REG_M>),<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.l @(R0,<REG_M>),<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mac.l @<REG_M>+,@<REG_N>+
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0000_nnnn_mmmm_1111);
|
|
|
|
//
|
|
|
|
// 1xxx
|
|
|
|
|
|
|
|
//mov.l <REG_M>,@(<disp>,<REG_N>)
|
|
|
|
sh4op(i0001_nnnn_mmmm_iiii);
|
|
|
|
//
|
|
|
|
// 2xxx
|
|
|
|
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.b <REG_M>,@<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_0000);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.w <REG_M>,@<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_0001);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.l <REG_M>,@<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.b <REG_M>,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_0100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.w <REG_M>,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_0101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.l <REG_M>,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
// div0s <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
// tst <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//and <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//xor <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//or <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//cmp/str <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//xtrct <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mulu <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//muls <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0010_nnnn_mmmm_1111);
|
2013-12-24 00:56:44 +00:00
|
|
|
|
2013-12-19 17:10:14 +00:00
|
|
|
//
|
|
|
|
// 3xxx
|
2013-12-24 00:56:44 +00:00
|
|
|
// cmp/eq <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_0000);
|
2013-12-24 00:56:44 +00:00
|
|
|
// cmp/hs <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//cmp/ge <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//div1 <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_0100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//dmulu.l <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_0101);
|
2013-12-24 00:56:44 +00:00
|
|
|
// cmp/hi <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//cmp/gt <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
// sub <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//subc <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//subv <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//add <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_1100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//dmuls.l <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//addc <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
// addv <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0011_nnnn_mmmm_1111);
|
2013-12-24 00:56:44 +00:00
|
|
|
|
2013-12-19 17:10:14 +00:00
|
|
|
//
|
|
|
|
// 4xxx
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts.l FPUL,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0101_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts.l FPSCR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0110_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts.l MACH,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts.l MACL,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts.l PR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//sts.l DBR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_1111_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc.l SR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc.l GBR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc.l VBR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc.l SSR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0011_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc.l SGR,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0011_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc.l SPC,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0100_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//stc Rm_BANK,@-<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_1mmm_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds.l @<REG_N>+,MACH
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds.l @<REG_N>+,MACL
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds.l @<REG_N>+,PR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds.l @<REG_N>+,FPUL
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0101_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds.l @<REG_N>+,FPSCR
|
|
|
|
sh4op(i0100_nnnn_0110_0110);
|
|
|
|
//ldc.l @<REG_N>+,DBR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_1111_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc.l @<REG_N>+,SR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc.l @<REG_N>+,GBR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc.l @<REG_N>+,VBR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc.l @<REG_N>+,SSR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0011_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc.l @<REG_N>+,SGR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0011_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc.l @<REG_N>+,SPC
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0100_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc.l @<REG_N>+,R0_BANK
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_1mmm_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds <REG_N>,MACH
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds <REG_N>,MACL
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds <REG_N>,PR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds <REG_N>,FPUL
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0101_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//lds <REG_N>,FPSCR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0110_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,GBR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_1111_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,SR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,GBR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,VBR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,SSR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0011_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,SGR
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0011_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,SPC
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0100_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ldc <REG_N>,R0_BANK
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_1mmm_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shll <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0000);
|
|
|
|
//4210
|
2013-12-24 00:56:44 +00:00
|
|
|
//dt <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_0000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shal <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shlr <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//cmp/pz <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_0001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shar <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//rotcl <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//rotl <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//cmp/pl <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_0101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//rotcr <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_0101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//rotr <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_0101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shll2 <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shll8 <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shll16 <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shlr2 <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shlr8 <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shlr16 <REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//jmp @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0010_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//jsr @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0000_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//tas.b @<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_0001_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shad <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_mmmm_1100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//shld <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_mmmm_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mac.w @<REG_M>+,@<REG_N>+
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0100_nnnn_mmmm_1111);
|
2013-12-24 00:56:44 +00:00
|
|
|
|
2013-12-19 17:10:14 +00:00
|
|
|
//
|
|
|
|
// 5xxx
|
|
|
|
|
|
|
|
//mov.l @(<disp>,<REG_M>),<REG_N>
|
|
|
|
sh4op(i0101_nnnn_mmmm_iiii);
|
|
|
|
//
|
|
|
|
// 6xxx
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.b @<REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.w @<REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.l @<REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.b @<REG_M>+,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.w @<REG_M>+,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.l @<REG_M>+,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//not <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//swap.b <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//swap.w <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//negc <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//neg <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//extu.b <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//extu.w <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//exts.b <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//exts.w <REG_M>,<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i0110_nnnn_mmmm_1111);
|
|
|
|
//
|
|
|
|
// 7xxx
|
|
|
|
//add #<imm>,<REG_N>
|
|
|
|
sh4op(i0111_nnnn_iiii_iiii);
|
|
|
|
//
|
|
|
|
// 8xxx
|
|
|
|
|
2013-12-24 00:56:44 +00:00
|
|
|
// bf <bdisp8>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_1011_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// bf.s <bdisp8>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_1111_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// bt <bdisp8>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_1001_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// bt.s <bdisp8>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_1101_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// cmp/eq #<imm>,R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_1000_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.b R0,@(<disp>,<REG_M>)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_0000_mmmm_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.w R0,@(<disp>,<REG_M>)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_0001_mmmm_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.b @(<disp>,<REG_M>),R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_0100_mmmm_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.w @(<disp>,<REG_M>),R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1000_0101_mmmm_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
|
2013-12-19 17:10:14 +00:00
|
|
|
//
|
|
|
|
// 9xxx
|
|
|
|
|
2013-12-24 00:56:44 +00:00
|
|
|
//mov.w @(<disp>,PC),<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1001_nnnn_iiii_iiii);
|
|
|
|
//
|
|
|
|
// Axxx
|
|
|
|
// bra <bdisp12>
|
|
|
|
sh4op(i1010_iiii_iiii_iiii);
|
|
|
|
//
|
|
|
|
// Bxxx
|
|
|
|
// bsr <bdisp12>
|
|
|
|
sh4op(i1011_iiii_iiii_iiii);
|
|
|
|
//
|
|
|
|
// Cxxx
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.b R0,@(<disp>,GBR)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0000_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.w R0,@(<disp>,GBR)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0001_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.l R0,@(<disp>,GBR)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0010_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// trapa #<imm>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0011_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.b @(<disp>,GBR),R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0100_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.w @(<disp>,GBR),R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0101_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.l @(<disp>,GBR),R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0110_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// mova @(<disp>,PC),R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_0111_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// tst #<imm>,R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1000_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// and #<imm>,R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1001_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// xor #<imm>,R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1010_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// or #<imm>,R0
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1011_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// tst.b #<imm>,@(R0,GBR)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1100_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// and.b #<imm>,@(R0,GBR)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1101_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// xor.b #<imm>,@(R0,GBR)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1110_iiii_iiii);
|
2013-12-24 00:56:44 +00:00
|
|
|
// or.b #<imm>,@(R0,GBR)
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1100_1111_iiii_iiii);
|
|
|
|
//
|
|
|
|
// Dxxx
|
|
|
|
|
2013-12-24 00:56:44 +00:00
|
|
|
// mov.l @(<disp>,PC),<REG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1101_nnnn_iiii_iiii);
|
|
|
|
//
|
|
|
|
// Exxx
|
|
|
|
|
|
|
|
// mov #<imm>,<REG_N>
|
|
|
|
sh4op(i1110_nnnn_iiii_iiii);
|
|
|
|
|
|
|
|
// Fxxx
|
|
|
|
|
|
|
|
//fadd <FREG_M>,<FREG_N>
|
|
|
|
sh4op(i1111_nnnn_mmmm_0000);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fsub <FREG_M>,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_mmmm_0001);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fmul <FREG_M>,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_mmmm_0010);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fdiv <FREG_M>,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_mmmm_0011);
|
|
|
|
//fcmp/eq <FREG_M>,<FREG_N>
|
|
|
|
sh4op(i1111_nnnn_mmmm_0100);
|
|
|
|
//fcmp/gt <FREG_M>,<FREG_N>
|
|
|
|
sh4op(i1111_nnnn_mmmm_0101);
|
|
|
|
//fmov.s @(R0,<REG_M>),<FREG_N>
|
|
|
|
sh4op(i1111_nnnn_mmmm_0110);
|
|
|
|
//fmov.s <FREG_M>,@(R0,<REG_N>)
|
|
|
|
sh4op(i1111_nnnn_mmmm_0111);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fmov.s @<REG_M>,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_mmmm_1000);
|
|
|
|
//fmov.s @<REG_M>+,<FREG_N>
|
|
|
|
sh4op(i1111_nnnn_mmmm_1001);
|
|
|
|
//fmov.s <FREG_M>,@<REG_N>
|
|
|
|
sh4op(i1111_nnnn_mmmm_1010);
|
|
|
|
//fmov.s <FREG_M>,@-<REG_N>
|
|
|
|
sh4op(i1111_nnnn_mmmm_1011);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fmov <FREG_M>,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_mmmm_1100);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fabs <FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_0101_1101);
|
|
|
|
// FSCA FPUL, DRn//F0FD//1111_nnnn_1111_1101
|
|
|
|
sh4op(i1111_nnn0_1111_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fcnvds <DR_N>,FPUL
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_1011_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fcnvsd FPUL,<DR_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_1010_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fipr <FV_M>,<FV_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnmm_1110_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fldi0 <FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_1000_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fldi1 <FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_1001_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//flds <FREG_N>,FPUL
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_0001_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//float FPUL,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_0010_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fneg <FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_0100_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//frchg
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_1011_1111_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fschg
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_0011_1111_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fsqrt <FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_0110_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ftrc <FREG_N>, FPUL
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_0011_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fsts FPUL,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_0000_1101);
|
2013-12-24 00:56:44 +00:00
|
|
|
//fmac <FREG_0>,<FREG_M>,<FREG_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nnnn_mmmm_1110);
|
2013-12-24 00:56:44 +00:00
|
|
|
//ftrv xmtrx,<FV_N>
|
2013-12-19 17:10:14 +00:00
|
|
|
sh4op(i1111_nn01_1111_1101);
|
|
|
|
//FSRRA
|
|
|
|
sh4op(i1111_nnnn_0111_1101);
|
|
|
|
|
|
|
|
sh4op(iNotImplemented);
|