Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Classes | Functions | Variables
miasm2.arch.sh4.arch Namespace Reference

Classes

class  additional_info
 
class  bs_dgpreg
 
class  bs_dr0gbr
 
class  bs_dr0gp
 
class  instruction_sh4
 
class  mn_sh4
 
class  sh4_bgpreg
 
class  sh4_dgbrimm8
 
class  sh4_dgpreg
 
class  sh4_dgpreg_imm
 
class  sh4_dgpregpdec
 
class  sh4_dgpregpinc
 
class  sh4_dpc16imm
 
class  sh4_dpc32imm
 
class  sh4_dr
 
class  sh4_freg
 
class  sh4_gpreg
 
class  sh4_gpreg_noarg
 
class  sh4_imm
 
class  sh4_pc32imm
 
class  sh4_reg
 
class  sh4_simm
 

Functions

def parse_deref_pcimm
 
def parse_pcandimmimm
 
def ast_id2expr
 
def ast_int2expr
 
def parse_deref_mem
 
def parse_predec
 
def parse_postinc
 
def parse_regdisp
 
def parse_regreg
 
def addop
 

Variables

tuple jra = ExprId('jra')
 
tuple jrb = ExprId('jrb')
 
tuple jrc = ExprId('jrc')
 
tuple PLUS = Suppress("+")
 
tuple MULT = Suppress("*")
 
tuple MINUS = Suppress("-")
 
tuple AND = Suppress("&")
 
tuple LBRACK = Suppress("[")
 
tuple RBRACK = Suppress("]")
 
tuple DEREF = Suppress("@")
 
tuple COMMA = Suppress(",")
 
tuple LPARENT = Suppress("(")
 
tuple RPARENT = Suppress(")")
 
tuple my_var_parser = parse_ast(ast_id2expr, ast_int2expr)
 
 int_or_expr = base_expr
 
tuple ref_pc
 
tuple ref_pcandimm
 
tuple pcdisp
 
tuple PTR = Suppress('PTR')
 
tuple deref_pc = Group(DEREF + ref_pc)
 
tuple deref_pcimm = Group(DEREF + ref_pcandimm)
 
tuple dgpregs_base = Group(DEREF + gpregs.parser)
 
tuple dgpregs_predec
 
tuple dgpregs_postinc
 
 dgpregs = dgpregs_base|dgpregs_predec|dgpregs_postinc
 
tuple d_gpreg_gpreg
 
 dgpregs_p = dgpregs_predec|dgpregs_postinc
 
tuple dgpregs_ir
 
tuple dgbr_imm
 
tuple dgbr_reg
 
tuple rn = bs(l=4, cls=(sh4_gpreg,), fname="rn")
 
tuple rm = bs(l=4, cls=(sh4_gpreg,), fname="rm")
 
tuple d08_rn = bs(l=4, cls=(sh4_dgpreg,), fname="rn", sz = 8)
 
tuple d16_rn = bs(l=4, cls=(sh4_dgpreg,), fname="rn", sz = 16)
 
tuple d32_rn = bs(l=4, cls=(sh4_dgpreg,), fname="rn", sz = 32)
 
tuple d08_rm = bs(l=4, cls=(sh4_dgpreg,), fname="rm", sz = 8)
 
tuple d16_rm = bs(l=4, cls=(sh4_dgpreg,), fname="rm", sz = 16)
 
tuple d32_rm = bs(l=4, cls=(sh4_dgpreg,), fname="rm", sz = 32)
 
tuple brm = bs(l=3, cls=(sh4_bgpreg,), fname="brm")
 
tuple brn = bs(l=3, cls=(sh4_bgpreg,), fname="brn")
 
tuple d08rnimm = bs(l=4, fname="rn", cls=(sh4_dgpreg_imm,), sz = 8)
 
tuple d16rnimm = bs(l=4, fname="rn", cls=(sh4_dgpreg_imm,), sz = 16)
 
tuple d32rnimm = bs(l=4, fname="rn", cls=(sh4_dgpreg_imm,), sz = 32)
 
tuple d08rmimm = bs(l=4, fname="rm", cls=(sh4_dgpreg_imm,), sz = 8)
 
tuple d16rmimm = bs(l=4, fname="rm", cls=(sh4_dgpreg_imm,), sz = 16)
 
tuple d32rmimm = bs(l=4, fname="rm", cls=(sh4_dgpreg_imm,), sz = 32)
 
tuple btype = bs(l=4, fname="btype", order=-1)
 
tuple s08imm = bs(l=8, cls=(sh4_simm,), fname="imm")
 
tuple s12imm = bs(l=12, cls=(sh4_simm,), fname="imm")
 
tuple dpc16imm = bs(l=8, cls=(sh4_dpc16imm,), fname="pcimm", sz=16)
 
tuple dpc32imm = bs(l=8, cls=(sh4_dpc32imm,), fname="pcimm", sz=32)
 
tuple dimm4 = bs(l=4, fname='disp', order=-1)
 
tuple d08gbrimm8 = bs(l=8, cls=(sh4_dgbrimm8,), fname='disp', sz=8)
 
tuple d16gbrimm8 = bs(l=8, cls=(sh4_dgbrimm8,), fname='disp', sz=16)
 
tuple d32gbrimm8 = bs(l=8, cls=(sh4_dgbrimm8,), fname='disp', sz=32)
 
tuple pc32imm = bs(l=8, cls=(sh4_pc32imm,), fname="pcimm")
 
tuple d08rnpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=8, fname="rn")
 
tuple d08rmpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=8, fname="rm")
 
tuple d16rnpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=16, fname="rn")
 
tuple d16rmpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=16, fname="rm")
 
tuple d32rnpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=32, fname="rn")
 
tuple d32rmpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=32, fname="rm")
 
tuple d08rnpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=8, fname="rn")
 
tuple d08rmpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=8, fname="rm")
 
tuple d16rnpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=16, fname="rn")
 
tuple d16rmpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=16, fname="rm")
 
tuple d32rnpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=32, fname="rn")
 
tuple d32rmpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=32, fname="rm")
 
tuple u08imm = bs(l=8, cls=(sh4_imm,), fname="imm")
 
tuple dr0gbr = bs(l=0, cls=(bs_dr0gbr,), sz=8)
 
tuple d08gpreg = bs(l=4, cls=(bs_dgpreg,), sz=8)
 
tuple d32gpreg = bs(l=4, cls=(bs_dgpreg,), sz=32)
 
tuple frn = bs(l=4, cls=(sh4_freg,), fname="frn")
 
tuple frm = bs(l=4, cls=(sh4_freg,), fname="frm")
 
tuple bd08r0gp = bs(l=4, cls=(bs_dr0gp,), sz=8)
 
tuple bd16r0gp = bs(l=4, cls=(bs_dr0gp,), sz=16)
 
tuple bd32r0gp = bs(l=4, cls=(bs_dr0gp,), sz=32)
 
tuple drn = bs(l=3, cls=(sh4_dr,), fname="drn")
 
tuple drm = bs(l=3, cls=(sh4_dr,), fname="drm")
 

Function Documentation

def miasm2.arch.sh4.arch.addop (   name,
  fields,
  args = None,
  alias = False 
)

Definition at line 645 of file arch.py.

646 def addop(name, fields, args=None, alias=False):
647  dct = {"fields": fields}
648  dct["alias"] = alias
649  if args is not None:
650  dct['args'] = args
651  type(name, (mn_sh4,), dct)
652 
653 addop("mov", [bs('1110'), rn, s08imm], [s08imm, rn])
654 addop("mov_w", [bs('1001'), rn, dpc16imm], [dpc16imm, rn])
655 addop("mov_l", [bs('1101'), rn, dpc32imm], [dpc32imm, rn])
656 addop("mov", [bs('0110', fname="opc"), rn, rm, bs('0011')], [rm, rn])
657 addop("mov_b", [bs('0010', fname="opc"), d08_rn, rm, bs('0000')], [rm, d08_rn])
658 addop("mov_w", [bs('0010', fname="opc"), d16_rn, rm, bs('0001')], [rm, d16_rn])
659 addop("mov_l", [bs('0010', fname="opc"), d32_rn, rm, bs('0010')], [rm, d32_rn])
660 addop("mov_b", [bs('0110', fname="opc"), rn, d08_rm, bs('0000')], [d08_rm, rn])
661 addop("mov_w", [bs('0110', fname="opc"), rn, d16_rm, bs('0001')], [d16_rm, rn])
662 addop("mov_l", [bs('0110', fname="opc"), rn, d32_rm, bs('0010')], [d32_rm, rn])
663 addop("mov_b",
664  [bs('0010', fname="opc"), d08rnpdec, rm, bs('0100')], [rm, d08rnpdec])
665 addop("mov_w",
666  [bs('0010', fname="opc"), d16rnpdec, rm, bs('0101')], [rm, d16rnpdec])
667 addop("mov_l",
668  [bs('0010', fname="opc"), d32rnpdec, rm, bs('0110')], [rm, d32rnpdec])
669 addop("mov_b",
670  [bs('0110', fname="opc"), rn, d08rmpinc, bs('0100')], [rm, d08rnpinc])
671 addop("mov_w",
672  [bs('0110', fname="opc"), rn, d16rmpinc, bs('0101')], [d16rmpinc, rn])
673 addop("mov_l",
674  [bs('0110', fname="opc"), rn, d32rmpinc, bs('0110')], [d32rmpinc, rn])
675 addop("mov_b", [bs('10000000', fname='opc'), bsr0, d08rnimm, dimm4])
676 addop("mov_w", [bs('10000001', fname='opc'), bsr0, d16rnimm, dimm4])
677 addop("mov_l", [bs('0001', fname='opc'), d32rnimm, rm, dimm4], [rm, d32rnimm])
678 addop("mov_b", [bs('10000100', fname='opc'), d08rmimm, dimm4, bsr0])
679 addop("mov_w", [bs('10000101', fname='opc'), d16rmimm, dimm4, bsr0])
680 addop("mov_l", [bs('0101', fname='opc'), rn, d32rmimm, dimm4], [d32rmimm, rn])
681 addop("mov_b",
682  [bs('0000', fname='opc'), bd08r0gp, rm, bs('0100')], [rm, bd08r0gp])
683 addop("mov_w",
684  [bs('0000', fname='opc'), bd16r0gp, rm, bs('0101')], [rm, bd16r0gp])
685 addop("mov_l",
686  [bs('0000', fname='opc'), bd32r0gp, rm, bs('0110')], [rm, bd32r0gp])
687 addop("mov_b",
688  [bs('0000', fname='opc'), rn, bd08r0gp, bs('1100')], [bd08r0gp, rn])
689 addop("mov_w",
690  [bs('0000', fname='opc'), rn, bd16r0gp, bs('1101')], [bd16r0gp, rn])
691 addop("mov_l",
692  [bs('0000', fname='opc'), rn, bd32r0gp, bs('1110')], [bd32r0gp, rn])
693 
694 addop("mov_b", [bs('11000000'), bsr0, d08gbrimm8])
695 addop("mov_w", [bs('11000001'), bsr0, d16gbrimm8])
696 addop("mov_l", [bs('11000010'), bsr0, d32gbrimm8])
697 
698 addop("mov_b", [bs('11000100'), d08gbrimm8, bsr0])
699 addop("mov_w", [bs('11000101'), d16gbrimm8, bsr0])
700 addop("mov_l", [bs('11000110'), d32gbrimm8, bsr0])
701 
702 addop("mov", [bs('11000111'), pc32imm, bsr0])
703 
704 addop("swapb", [bs('0110'), rn, rm, bs('1000')], [rm, rn])
705 addop("swapw", [bs('0110'), rn, rm, bs('1001')], [rm, rn])
706 addop("xtrct", [bs('0010'), rn, rm, bs('1101')], [rm, rn])
707 
708 
709 addop("add", [bs('0011'), rn, rm, bs('1100')], [rm, rn])
710 addop("add", [bs('0111'), rn, s08imm], [s08imm, rn])
711 addop("addc", [bs('0011'), rn, rm, bs('1110')], [rm, rn])
712 addop("addv", [bs('0011'), rn, rm, bs('1111')], [rm, rn])
713 
714 
715 addop("cmpeq", [bs('10001000'), s08imm, bsr0])
716 
717 
718 addop("cmpeq", [bs('0011'), rn, rm, bs('0000')], [rm, rn])
719 addop("cmphs", [bs('0011'), rn, rm, bs('0010')], [rm, rn])
720 addop("cmpge", [bs('0011'), rn, rm, bs('0011')], [rm, rn])
721 addop("cmphi", [bs('0011'), rn, rm, bs('0110')], [rm, rn])
722 addop("cmpgt", [bs('0011'), rn, rm, bs('0111')], [rm, rn])
723 
724 
725 addop("cmppz", [bs('0100'), rn, bs('00010001')])
726 addop("cmppl", [bs('0100'), rn, bs('00010101')])
727 addop("cmpstr", [bs('0010'), rn, rm, bs('1100')], [rm, rn])
728 
729 
730 addop("div1", [bs('0011'), rn, rm, bs('0100')], [rm, rn])
731 
732 addop("div0s", [bs('0010'), rn, rm, bs('0111')], [rm, rn])
733 addop("div0u", [bs('0000000000011001')])
734 
735 addop("dmuls", [bs('0011'), rn, rm, bs('1101')], [rm, rn])
736 addop("dmulu", [bs('0011'), rn, rm, bs('0101')], [rm, rn])
737 
738 addop("dt", [bs('0100'), rn, bs('00010000')])
739 
740 
741 addop("extsb", [bs('0110'), rn, rm, bs('1110')], [rm, rn])
742 addop("extsw", [bs('0110'), rn, rm, bs('1111')], [rm, rn])
743 addop("extub", [bs('0110'), rn, rm, bs('1100')], [rm, rn])
744 addop("extuw", [bs('0110'), rn, rm, bs('1101')], [rm, rn])
745 
746 addop("mac_l", [bs('0000', fname='opc'), d32rnpinc,
747  d32rmpinc, bs('1111')], [d32rmpinc, d32rnpinc])
748 addop("mac_w", [bs('0100', fname='opc'), d16rnpinc,
749  d16rmpinc, bs('1111')], [d16rmpinc, d16rnpinc])
750 
751 addop("mull", [bs('0000'), rn, rm, bs('0111')], [rm, rn])
752 addop("mulsw", [bs('0010'), rn, rm, bs('1111')], [rm, rn])
753 addop("muluw", [bs('0010'), rn, rm, bs('1110')], [rm, rn])
754 
755 addop("neg", [bs('0110'), rn, rm, bs('1011')], [rm, rn])
756 addop("negc", [bs('0110'), rn, rm, bs('1010')], [rm, rn])
757 
758 addop("sub", [bs('0011'), rn, rm, bs('1000')], [rm, rn])
759 addop("subc", [bs('0011'), rn, rm, bs('1010')], [rm, rn])
760 addop("subv", [bs('0011'), rn, rm, bs('1011')], [rm, rn])
761 
762 addop("and", [bs('0010'), rn, rm, bs('1001')], [rm, rn])
763 addop("and", [bs('11001001'), u08imm, bsr0])
764 addop("and_b", [bs('11001101'), u08imm, dr0gbr])
765 
766 addop("not", [bs('0110'), rn, rm, bs('0111')], [rm, rn])
767 
768 addop("or", [bs('0010'), rn, rm, bs('1011')], [rm, rn])
769 
770 addop("or", [bs('11001011'), u08imm, bsr0])
771 addop("or_b", [bs('11001111'), u08imm, dr0gbr])
772 
773 addop("tas_b", [bs('0100'), d08gpreg, bs('00011011')])
774 addop("tst", [bs('0010'), rn, rm, bs('1000')], [rm, rn])
775 addop("tst", [bs('11001000'), u08imm, bsr0])
776 addop("tst_b", [bs('11001100'), u08imm, dr0gbr])
777 
778 
779 addop("xor", [bs('0010'), rn, rm, bs('1010')], [rm, rn])
780 addop("xor", [bs('11001010'), u08imm, bsr0])
781 addop("xor_b", [bs('11001110'), u08imm, dr0gbr])
782 
783 addop("rotl", [bs('0100'), rn, bs('00000100')])
784 addop("rotr", [bs('0100'), rn, bs('00000101')])
785 addop("rotcl", [bs('0100'), rn, bs('00100100')])
786 addop("rotcr", [bs('0100'), rn, bs('00100101')])
787 
788 addop("shad", [bs('0100'), rn, rm, bs('1100')], [rm, rn])
789 addop("shal", [bs('0100'), rn, bs('00100000')])
790 addop("shar", [bs('0100'), rn, bs('00100001')])
791 addop("shld", [bs('0100'), rn, rm, bs('1101')], [rm, rn])
792 
793 addop("shll", [bs('0100'), rn, bs('00000000')])
794 addop("shlr", [bs('0100'), rn, bs('00000001')])
795 addop("shll2", [bs('0100'), rn, bs('00001000')])
796 addop("shlr2", [bs('0100'), rn, bs('00001001')])
797 addop("shll8", [bs('0100'), rn, bs('00011000')])
798 addop("shlr8", [bs('0100'), rn, bs('00011001')])
799 addop("shll16", [bs('0100'), rn, bs('00101000')])
800 addop("shlr16", [bs('0100'), rn, bs('00101001')])
801 
802 
803 addop("bf", [bs('10001011'), s08imm])
804 """
805  def splitflow(self):
806  return True
807  def breakflow(self):
808  return True
809  def dstflow(self):
810  return True
811  def dstflow2label(self, symbol_pool):
812  e = self.args[0].expr
813  ad = e.arg*2+4+self.offset
814  l = symbol_pool.getby_offset_create(ad)
815  s = ExprId(l, e.size)
816  self.args[0].expr = s
817 """
818 
819 addop("bfs", [bs('10001111'), s08imm])
820 """
821  delayslot = 1
822 """
823 addop("bt", [bs('10001001'), s08imm])
824 
825 addop("bts", [bs('10001101'), s08imm])
826 
827 addop("bra", [bs('1010'), s12imm])
828 """
829  delayslot = 1
830  def breakflow(self):
831  return True
832  def dstflow(self):
833  return True
834  def dstflow2label(self, symbol_pool):
835  e = self.args[0].expr
836  ad = e.arg*2+4+self.offset
837  l = symbol_pool.getby_offset_create(ad)
838  s = ExprId(l, e.size)
839  self.args[0].expr = s
840 """
841 
842 addop("braf", [bs('0000'), rn, bs('00100011')])
843 """
844  delayslot = 1
845  def breakflow(self):
846  return True
847  def dstflow(self):
848  return True
849 """
850 addop("bsr", [bs('1011'), s12imm])
851 
852 addop("bsrf", [bs('0000'), rn, bs('00000011')])
853 """
854  delayslot = 1
855  def breakflow(self):
856  return True
857  def is_subcall(self):
858  return True
859  def splitflow(self):
860  return True
861 """
862 
863 addop("jmp_l", [bs('0100'), d32gpreg, bs('00101011')])
864 """
865  delayslot = 1
866  def breakflow(self):
867  return True
868 """
869 
870 addop("jsr_l", [bs('0100'), d32gpreg, bs('00001011')])
871 """
872  delayslot = 1
873  def breakflow(self):
874  return True
875  def is_subcall(self):
876  return True
877  def splitflow(self):
878  return True
879 """
880 
881 addop("rts", [bs('0000000000001011')])
882 """
883  delayslot = 1
884  def breakflow(self):
885  return True
886 """
887 addop("clrmac", [bs('0000000000101000')])
888 addop("clrs", [bs('0000000001001000')])
889 addop("clrt", [bs('0000000000001000')])
890 
891 
892 addop("ldc", [bs('0100'), rm, bssr, bs('00001110')])
893 addop("ldc", [bs('0100'), rm, bsgbr, bs('00011110')])
894 addop("ldc", [bs('0100'), rm, bsvbr, bs('00101110')])
895 addop("ldc", [bs('0100'), rm, bsssr, bs('00111110')])
896 addop("ldc", [bs('0100'), rm, bsspc, bs('01001110')])
897 addop("ldc", [bs('0100'), rm, bsdbr, bs('11111010')])
898 addop("ldc", [bs('0100'), rm, bs('1'), brn, bs('1110')], [rm, brn])
899 addop("ldc_l", [bs('0100'), d32rmpinc, bssr, bs('00000111')])
900 addop("ldc_l", [bs('0100'), d32rmpinc, bsgbr, bs('00010111')])
901 addop("ldc_l", [bs('0100'), d32rmpinc, bsvbr, bs('00100111')])
902 addop("ldc_l", [bs('0100'), d32rmpinc, bsssr, bs('00110111')])
903 addop("ldc_l", [bs('0100'), d32rmpinc, bsspc, bs('01000111')])
904 addop("ldc_l", [bs('0100'), d32rmpinc, bsdbr, bs('11110110')])
905 addop("ldc_l", [bs('0100'), d32rmpinc, bs('1'), brn, bs('0111')])
906 addop("lds", [bs('0100'), rm, bsmach, bs('00001010')])
907 addop("lds", [bs('0100'), rm, bsmacl, bs('00011010')])
908 addop("lds", [bs('0100'), rm, bspr, bs('00101010')])
909 addop("lds_l", [bs('0100'), d32rmpinc, bsmach, bs('00000110')])
910 addop("lds_l", [bs('0100'), d32rmpinc, bsmacl, bs('00010110')])
911 addop("lds_l", [bs('0100'), d32rmpinc, bspr, bs('00100110')])
912 addop("ldtlb", [bs('0000000000111000')])
913 
914 addop("movca_l", [bs('0000'), bsr0, d32gpreg, bs('11000011')])
915 addop("nop", [bs('0000000000001001')])
916 addop("ocbi_l", [bs('0000'), d32gpreg, bs('10010011')])
917 addop("ocbp_l", [bs('0000'), d32gpreg, bs('10100011')])
918 addop("ocbwb_l", [bs('0000'), d32gpreg, bs('10110011')])
919 addop("pref_l", [bs('0000'), d32gpreg, bs('10000011')])
920 
921 
922 addop("rte", [bs('0000000000101011')])
923 addop("sets", [bs('0000000001011000')])
924 addop("sett", [bs('0000000000011000')])
925 addop("sleep", [bs('0000000000011011')])
926 addop("stc", [bs('0000'), bssr, rn, bs('00000010')])
927 addop("stc", [bs('0000'), bsgbr, rn, bs('00010010')])
928 addop("stc", [bs('0000'), bsvbr, rn, bs('00100010')])
929 addop("stc", [bs('0000'), bsssr, rn, bs('00110010')])
930 addop("stc", [bs('0000'), bsspc, rn, bs('01000010')])
931 addop("stc", [bs('0000'), bssgr, rn, bs('00111010')])
932 addop("stc", [bs('0000'), bsdbr, rn, bs('11111010')])
933 addop("stc", [bs('0000'), rn, bs('1'), brm, bs('0010')], [brm, rn])
934 
935 addop("stc_l", [bs('0100'), bssr, d32rmpdec, bs('00000011')])
936 addop("stc_l", [bs('0100'), bsgbr, d32rmpdec, bs('00010011')])
937 addop("stc_l", [bs('0100'), bsvbr, d32rmpdec, bs('00100011')])
938 addop("stc_l", [bs('0100'), bsssr, d32rmpdec, bs('00110011')])
939 addop("stc_l", [bs('0100'), bsspc, d32rmpdec, bs('01000011')])
940 addop("stc_l", [bs('0100'), bssgr, d32rmpdec, bs('00110010')])
941 addop("stc_l", [bs('0100'), bsdbr, d32rmpdec, bs('11110010')])
942 addop("stc_l",
943  [bs('0100'), d32rnpdec, bs('1'), brm, bs('0011')], [brm, d32rnpdec])
944 
945 # float
946 addop("sts", [bs('0000'), bsmach, rm, bs('00001010')])
947 addop("sts", [bs('0000'), bsmacl, rm, bs('00011010')])
948 addop("sts", [bs('0000'), bspr, rm, bs('00101010')])
949 addop("sts_l", [bs('0100'), bsmach, d32rmpdec, bs('00000010')])
950 addop("sts_l", [bs('0100'), bsmacl, d32rmpdec, bs('00010010')])
951 addop("sts_l",
952  [bs('0100'), d32rnpdec, bspr, bs('00100010')], [bspr, d32rnpdec])
953 addop("trapa", [bs('11000011'), u08imm])
954 
955 addop("fldi0", [bs('1111'), frn, bs('10001101')])
956 addop("fldi1", [bs('1111'), frn, bs('10011101')])
957 addop("fmov", [bs('1111'), frn, frm, bs('1100')], [frm, frn])
958 addop("fmov_s", [bs('1111'), frn, d32gpreg, bs('1000')], [d32gpreg, frn])
959 addop("fmov_s", [bs('1111'), frn, bd32r0gp, bs('0110')], [bd32r0gp, frn])
960 addop("fmov_s", [bs('1111'), frn, d32rmpinc, bs('1001')], [d32rmpinc, frn])
961 addop("fmov_s", [bs('1111'), d32gpreg, frm, bs('1010')], [frm, d32gpreg])
962 addop("fmov_s", [bs('1111'), d32rnpdec, frm, bs('1011')], [frm, d32rnpdec])
963 addop("fmov_s", [bs('1111'), bd32r0gp, frm, bs('0111')], [frm, bd32r0gp])
964 
965 addop("flds", [bs('1111'), frm, bsfpul, bs('00011101')])
966 addop("fsts", [bs('1111'), bsfpul, frm, bs('00001101')])
967 addop("fabs", [bs('1111'), frn, bs('01011101')])
968 addop("fadd", [bs('1111'), frn, frm, bs('0000')], [frm, frn])
969 addop("fcmpeq", [bs('1111'), frn, frm, bs('0100')], [frm, frn])
970 addop("fcmpgt", [bs('1111'), frn, frm, bs('0101')], [frm, frn])
971 addop("fdiv", [bs('1111'), frn, frm, bs('0011')], [frm, frn])
972 
973 addop("float", [bs('1111'), bsfpul, frn, bs('00101101')])
974 addop("fmac", [bs('1111'), bsfr0, frn, frm, bs('1110')], [bsfr0, frm, frn])
975 addop("fmul", [bs('1111'), frn, frm, bs('0010')], [frm, frn])
976 addop("fneg", [bs('1111'), frn, bs('01001101')])
977 addop("fsqrt", [bs('1111'), frn, bs('01101101')])
978 addop("fsub", [bs('1111'), frn, frm, bs('0001')], [frm, frn])
979 addop("ftrc", [bs('1111'), frm, bsfpul, bs('00111101')])
def miasm2.arch.sh4.arch.ast_id2expr (   t)

Definition at line 39 of file arch.py.

39 
40 def ast_id2expr(t):
41  if not t in mn_sh4.regs.all_regs_ids_byname:
42  r = ExprId(asm_label(t))
43  else:
44  r = mn_sh4.regs.all_regs_ids_byname[t]
45  return r
def miasm2.arch.sh4.arch.ast_int2expr (   a)

Definition at line 46 of file arch.py.

46 
47 def ast_int2expr(a):
48  return ExprInt32(a)
49 

+ Here is the call graph for this function:

def miasm2.arch.sh4.arch.parse_deref_mem (   s,
  l,
  t 
)

Definition at line 68 of file arch.py.

68 
69 def parse_deref_mem(s, l, t):
70  t = t[0]
71  e = ExprMem(t[0], 32)
72  return e
73 
def parse_deref_mem
Definition: arch.py:68
def miasm2.arch.sh4.arch.parse_deref_pcimm (   t)

Definition at line 30 of file arch.py.

30 
31 def parse_deref_pcimm(t):
32  t = t[0]
33  return t[0] + t[1]
34 
def parse_deref_pcimm
Definition: arch.py:30
def miasm2.arch.sh4.arch.parse_pcandimmimm (   t)

Definition at line 35 of file arch.py.

35 
36 def parse_pcandimmimm(t):
37  t = t[0]
38  return (t[0] & t[1]) + t[2]
def parse_pcandimmimm
Definition: arch.py:35
def miasm2.arch.sh4.arch.parse_postinc (   s,
  l,
  t 
)

Definition at line 80 of file arch.py.

80 
81 def parse_postinc(s, l, t):
82  t = t[0]
83  e = ExprMem(ExprOp('postinc', t[0]))
84  return e
85 
def miasm2.arch.sh4.arch.parse_predec (   s,
  l,
  t 
)

Definition at line 74 of file arch.py.

74 
75 def parse_predec(s, l, t):
76  t = t[0]
77  e = ExprMem(ExprOp('predec', t[0]))
78  return e
79 
def miasm2.arch.sh4.arch.parse_regdisp (   t)

Definition at line 86 of file arch.py.

86 
87 def parse_regdisp(t):
88  t = t[0]
89  e = ExprMem(t[0] + t[1])
90  return e
91 
def miasm2.arch.sh4.arch.parse_regreg (   t)

Definition at line 92 of file arch.py.

92 
93 def parse_regreg(t):
94  t = t[0]
95  e = ExprMem(t[0] + t[1])
96  return e
97 

Variable Documentation

tuple miasm2.arch.sh4.arch.AND = Suppress("&")

Definition at line 21 of file arch.py.

tuple miasm2.arch.sh4.arch.bd08r0gp = bs(l=4, cls=(bs_dr0gp,), sz=8)

Definition at line 637 of file arch.py.

tuple miasm2.arch.sh4.arch.bd16r0gp = bs(l=4, cls=(bs_dr0gp,), sz=16)

Definition at line 638 of file arch.py.

tuple miasm2.arch.sh4.arch.bd32r0gp = bs(l=4, cls=(bs_dr0gp,), sz=32)

Definition at line 639 of file arch.py.

tuple miasm2.arch.sh4.arch.brm = bs(l=3, cls=(sh4_bgpreg,), fname="brm")

Definition at line 585 of file arch.py.

tuple miasm2.arch.sh4.arch.brn = bs(l=3, cls=(sh4_bgpreg,), fname="brn")

Definition at line 586 of file arch.py.

tuple miasm2.arch.sh4.arch.btype = bs(l=4, fname="btype", order=-1)

Definition at line 596 of file arch.py.

tuple miasm2.arch.sh4.arch.COMMA = Suppress(",")

Definition at line 25 of file arch.py.

tuple miasm2.arch.sh4.arch.d08_rm = bs(l=4, cls=(sh4_dgpreg,), fname="rm", sz = 8)

Definition at line 580 of file arch.py.

tuple miasm2.arch.sh4.arch.d08_rn = bs(l=4, cls=(sh4_dgpreg,), fname="rn", sz = 8)

Definition at line 577 of file arch.py.

tuple miasm2.arch.sh4.arch.d08gbrimm8 = bs(l=8, cls=(sh4_dgbrimm8,), fname='disp', sz=8)

Definition at line 603 of file arch.py.

tuple miasm2.arch.sh4.arch.d08gpreg = bs(l=4, cls=(bs_dgpreg,), sz=8)

Definition at line 631 of file arch.py.

tuple miasm2.arch.sh4.arch.d08rmimm = bs(l=4, fname="rm", cls=(sh4_dgpreg_imm,), sz = 8)

Definition at line 592 of file arch.py.

tuple miasm2.arch.sh4.arch.d08rmpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=8, fname="rm")

Definition at line 619 of file arch.py.

tuple miasm2.arch.sh4.arch.d08rmpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=8, fname="rm")

Definition at line 610 of file arch.py.

tuple miasm2.arch.sh4.arch.d08rnimm = bs(l=4, fname="rn", cls=(sh4_dgpreg_imm,), sz = 8)

Definition at line 588 of file arch.py.

tuple miasm2.arch.sh4.arch.d08rnpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=8, fname="rn")

Definition at line 618 of file arch.py.

tuple miasm2.arch.sh4.arch.d08rnpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=8, fname="rn")

Definition at line 609 of file arch.py.

tuple miasm2.arch.sh4.arch.d16_rm = bs(l=4, cls=(sh4_dgpreg,), fname="rm", sz = 16)

Definition at line 581 of file arch.py.

tuple miasm2.arch.sh4.arch.d16_rn = bs(l=4, cls=(sh4_dgpreg,), fname="rn", sz = 16)

Definition at line 578 of file arch.py.

tuple miasm2.arch.sh4.arch.d16gbrimm8 = bs(l=8, cls=(sh4_dgbrimm8,), fname='disp', sz=16)

Definition at line 604 of file arch.py.

tuple miasm2.arch.sh4.arch.d16rmimm = bs(l=4, fname="rm", cls=(sh4_dgpreg_imm,), sz = 16)

Definition at line 593 of file arch.py.

tuple miasm2.arch.sh4.arch.d16rmpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=16, fname="rm")

Definition at line 622 of file arch.py.

tuple miasm2.arch.sh4.arch.d16rmpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=16, fname="rm")

Definition at line 613 of file arch.py.

tuple miasm2.arch.sh4.arch.d16rnimm = bs(l=4, fname="rn", cls=(sh4_dgpreg_imm,), sz = 16)

Definition at line 589 of file arch.py.

tuple miasm2.arch.sh4.arch.d16rnpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=16, fname="rn")

Definition at line 621 of file arch.py.

tuple miasm2.arch.sh4.arch.d16rnpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=16, fname="rn")

Definition at line 612 of file arch.py.

tuple miasm2.arch.sh4.arch.d32_rm = bs(l=4, cls=(sh4_dgpreg,), fname="rm", sz = 32)

Definition at line 582 of file arch.py.

tuple miasm2.arch.sh4.arch.d32_rn = bs(l=4, cls=(sh4_dgpreg,), fname="rn", sz = 32)

Definition at line 579 of file arch.py.

tuple miasm2.arch.sh4.arch.d32gbrimm8 = bs(l=8, cls=(sh4_dgbrimm8,), fname='disp', sz=32)

Definition at line 605 of file arch.py.

tuple miasm2.arch.sh4.arch.d32gpreg = bs(l=4, cls=(bs_dgpreg,), sz=32)

Definition at line 632 of file arch.py.

tuple miasm2.arch.sh4.arch.d32rmimm = bs(l=4, fname="rm", cls=(sh4_dgpreg_imm,), sz = 32)

Definition at line 594 of file arch.py.

tuple miasm2.arch.sh4.arch.d32rmpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=32, fname="rm")

Definition at line 625 of file arch.py.

tuple miasm2.arch.sh4.arch.d32rmpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=32, fname="rm")

Definition at line 616 of file arch.py.

tuple miasm2.arch.sh4.arch.d32rnimm = bs(l=4, fname="rn", cls=(sh4_dgpreg_imm,), sz = 32)

Definition at line 590 of file arch.py.

tuple miasm2.arch.sh4.arch.d32rnpdec = bs(l=4, cls=(sh4_dgpregpinc,), op='predec', sz=32, fname="rn")

Definition at line 624 of file arch.py.

tuple miasm2.arch.sh4.arch.d32rnpinc = bs(l=4, cls=(sh4_dgpregpinc,), op='postinc', sz=32, fname="rn")

Definition at line 615 of file arch.py.

tuple miasm2.arch.sh4.arch.d_gpreg_gpreg
Initial value:
1 = Group(DEREF +
2  LPARENT + gpregs.parser + COMMA + gpregs.parser + RPARENT
3  )

Definition at line 109 of file arch.py.

tuple miasm2.arch.sh4.arch.DEREF = Suppress("@")

Definition at line 24 of file arch.py.

tuple miasm2.arch.sh4.arch.deref_pc = Group(DEREF + ref_pc)

Definition at line 98 of file arch.py.

tuple miasm2.arch.sh4.arch.deref_pcimm = Group(DEREF + ref_pcandimm)

Definition at line 99 of file arch.py.

tuple miasm2.arch.sh4.arch.dgbr_imm
Initial value:
1 = Group(DEREF + LPARENT + regi_gbr.parser +
2  COMMA + int_or_expr + RPARENT)

Definition at line 119 of file arch.py.

tuple miasm2.arch.sh4.arch.dgbr_reg
Initial value:
1 = Group(DEREF + LPARENT + regi_gbr.parser +
2  COMMA + gpregs.parser + RPARENT)

Definition at line 122 of file arch.py.

miasm2.arch.sh4.arch.dgpregs = dgpregs_base|dgpregs_predec|dgpregs_postinc

Definition at line 107 of file arch.py.

tuple miasm2.arch.sh4.arch.dgpregs_base = Group(DEREF + gpregs.parser)

Definition at line 101 of file arch.py.

tuple miasm2.arch.sh4.arch.dgpregs_ir
Initial value:
1 = Group(DEREF + LPARENT + gpregs.parser +
2  COMMA + int_or_expr + RPARENT)

Definition at line 115 of file arch.py.

miasm2.arch.sh4.arch.dgpregs_p = dgpregs_predec|dgpregs_postinc

Definition at line 112 of file arch.py.

tuple miasm2.arch.sh4.arch.dgpregs_postinc
Initial value:
1 = Group(
2  DEREF + gpregs.parser + PLUS)

Definition at line 104 of file arch.py.

tuple miasm2.arch.sh4.arch.dgpregs_predec
Initial value:
1 = Group(
2  DEREF + MINUS + gpregs.parser)

Definition at line 102 of file arch.py.

tuple miasm2.arch.sh4.arch.dimm4 = bs(l=4, fname='disp', order=-1)

Definition at line 602 of file arch.py.

tuple miasm2.arch.sh4.arch.dpc16imm = bs(l=8, cls=(sh4_dpc16imm,), fname="pcimm", sz=16)

Definition at line 600 of file arch.py.

tuple miasm2.arch.sh4.arch.dpc32imm = bs(l=8, cls=(sh4_dpc32imm,), fname="pcimm", sz=32)

Definition at line 601 of file arch.py.

tuple miasm2.arch.sh4.arch.dr0gbr = bs(l=0, cls=(bs_dr0gbr,), sz=8)

Definition at line 629 of file arch.py.

tuple miasm2.arch.sh4.arch.drm = bs(l=3, cls=(sh4_dr,), fname="drm")

Definition at line 642 of file arch.py.

tuple miasm2.arch.sh4.arch.drn = bs(l=3, cls=(sh4_dr,), fname="drn")

Definition at line 641 of file arch.py.

tuple miasm2.arch.sh4.arch.frm = bs(l=4, cls=(sh4_freg,), fname="frm")

Definition at line 635 of file arch.py.

tuple miasm2.arch.sh4.arch.frn = bs(l=4, cls=(sh4_freg,), fname="frn")

Definition at line 634 of file arch.py.

miasm2.arch.sh4.arch.int_or_expr = base_expr

Definition at line 53 of file arch.py.

tuple miasm2.arch.sh4.arch.jra = ExprId('jra')

Definition at line 12 of file arch.py.

tuple miasm2.arch.sh4.arch.jrb = ExprId('jrb')

Definition at line 13 of file arch.py.

tuple miasm2.arch.sh4.arch.jrc = ExprId('jrc')

Definition at line 14 of file arch.py.

tuple miasm2.arch.sh4.arch.LBRACK = Suppress("[")

Definition at line 22 of file arch.py.

tuple miasm2.arch.sh4.arch.LPARENT = Suppress("(")

Definition at line 26 of file arch.py.

tuple miasm2.arch.sh4.arch.MINUS = Suppress("-")

Definition at line 20 of file arch.py.

tuple miasm2.arch.sh4.arch.MULT = Suppress("*")

Definition at line 19 of file arch.py.

tuple miasm2.arch.sh4.arch.my_var_parser = parse_ast(ast_id2expr, ast_int2expr)

Definition at line 50 of file arch.py.

tuple miasm2.arch.sh4.arch.pc32imm = bs(l=8, cls=(sh4_pc32imm,), fname="pcimm")

Definition at line 607 of file arch.py.

tuple miasm2.arch.sh4.arch.pcdisp
Initial value:
1 = Group(regi_pc.parser + AND + int_or_expr +
2  PLUS + int_or_expr)

Definition at line 62 of file arch.py.

tuple miasm2.arch.sh4.arch.PLUS = Suppress("+")

Definition at line 18 of file arch.py.

tuple miasm2.arch.sh4.arch.PTR = Suppress('PTR')

Definition at line 65 of file arch.py.

tuple miasm2.arch.sh4.arch.RBRACK = Suppress("]")

Definition at line 23 of file arch.py.

tuple miasm2.arch.sh4.arch.ref_pc
Initial value:
1 = Group(LPARENT + regi_pc.parser + COMMA +
2  int_or_expr + RPARENT)

Definition at line 55 of file arch.py.

tuple miasm2.arch.sh4.arch.ref_pcandimm
Initial value:
1 = Group(
2  LPARENT + regi_pc.parser + AND + int_or_expr +
3  COMMA + int_or_expr + RPARENT)

Definition at line 57 of file arch.py.

tuple miasm2.arch.sh4.arch.rm = bs(l=4, cls=(sh4_gpreg,), fname="rm")

Definition at line 574 of file arch.py.

tuple miasm2.arch.sh4.arch.rn = bs(l=4, cls=(sh4_gpreg,), fname="rn")

Definition at line 573 of file arch.py.

tuple miasm2.arch.sh4.arch.RPARENT = Suppress(")")

Definition at line 27 of file arch.py.

tuple miasm2.arch.sh4.arch.s08imm = bs(l=8, cls=(sh4_simm,), fname="imm")

Definition at line 598 of file arch.py.

tuple miasm2.arch.sh4.arch.s12imm = bs(l=12, cls=(sh4_simm,), fname="imm")

Definition at line 599 of file arch.py.

tuple miasm2.arch.sh4.arch.u08imm = bs(l=8, cls=(sh4_imm,), fname="imm")

Definition at line 628 of file arch.py.