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