00001 #ifndef __mc68k_pat_H__
00002 #define __mc68k_pat_H__
00003 class InstructionPatterns {
00004 private:
00005 static int SP;
00006 static int FP;
00007 public:
00008 static Logue* std_call(CSR& csr, ADDRESS& lc, int& addr);
00009 static Logue* near_call(CSR& csr, ADDRESS& lc, int& addr);
00010 static Logue* pea_add_rts(CSR& csr, ADDRESS& lc, int& d32);
00011 static Logue* pea_pea_add_rts(CSR& csr, ADDRESS& lc, int& d32);
00012 static Logue* trap_syscall(CSR& csr, ADDRESS& lc, int& d16);
00013 static Logue* std_link(CSR& csr, ADDRESS& lc, int& locals);
00014 static Logue* link_save(CSR& csr, ADDRESS& lc, int& locals, int& d16);
00015 static Logue* link_save1(CSR& csr, ADDRESS& lc, int& locals, int& reg);
00016 static Logue* push_lea(CSR& csr, ADDRESS& lc, int& locals, int& reg);
00017 static Logue* bare_ret(CSR& csr, ADDRESS& lc);
00018 static Logue* std_ret(CSR& csr, ADDRESS& lc);
00019 static Logue* rest_ret(CSR& csr, ADDRESS& lc, int& d16);
00020 static Logue* rest1_ret(CSR& csr, ADDRESS& lc, int& reg);
00021 static Logue* pop_ret(CSR& csr, ADDRESS& lc, int& reg);
00022 static Logue* clear_stack(CSR& csr, ADDRESS& lc, int& n);
00023 private:
00024 static bool Aline(ADDRESS& lc, int& a, bool a_isVAR);
00025 static bool addaw_d16(ADDRESS& lc, int& a, bool a_isVAR);
00026 static bool addil$daIndirect(ADDRESS& lc, int& a, bool a_isVAR, int& b, bool b_isVAR);
00027 static bool bsr(ADDRESS& lc, int& a, bool a_isVAR);
00028 static bool call_(ADDRESS& lc, int& a, bool a_isVAR);
00029 static bool daIndirect(ADDRESS& lc, int& a, bool a_isVAR);
00030 static bool daPostInc(ADDRESS& lc, int& a, bool a_isVAR);
00031 static bool daPreDec(ADDRESS& lc, int& a, bool a_isVAR);
00032 static bool leaSpSp(ADDRESS& lc, int& a, bool a_isVAR);
00033 static bool link(ADDRESS& lc, int& a, bool a_isVAR, int& b, bool b_isVAR);
00034 static bool movemrl$daPostInc(ADDRESS& lc, int& a, bool a_isVAR, int& b, bool b_isVAR);
00035 static bool moverml$daPreDec(ADDRESS& lc, int& a, bool a_isVAR, int& b, bool b_isVAR);
00036 static bool peaPcDisp(ADDRESS& lc, int& a, bool a_isVAR);
00037 static bool popreg(ADDRESS& lc, int& a, bool a_isVAR);
00038 static bool pushreg(ADDRESS& lc, int& a, bool a_isVAR);
00039 static bool rts(ADDRESS& lc);
00040 static bool trap(ADDRESS& lc, int& a, bool a_isVAR);
00041 static bool unlk(ADDRESS& lc, int& a, bool a_isVAR);
00042 };
00043 #endif