コード例 #1
0
 def symbol_symb(self, s):
     s = s.strip()
     if s[0] == '*':
         return Types.StarDes(self.stardes_symb(s))
     elif parse.call_des:
         return Types.CallDes(self.calldes_symb(s))
     return self.jumpdes_symb(s)
コード例 #2
0
 def jumpdes_symb(self, s):
     if '+' in s or '-' in s:
         return Types.JumpDes(s.split()[0], 16)
     try:
         return Types.CallDes(self.calldes_symb(s))
     except AttributeError:
         return None
コード例 #3
0
ファイル: Parser.py プロジェクト: wwzcrack/RLOBF
 def jumpdes_symb(self, s):
     """
     Parse jump destination symbol (address or label)
     :param s: lexeme
     """
     if '+' in s or '-' in s:
         return Types.JumpDes(s.split()[0], 16)
     try: return Types.CallDes(self.calldes_symb(s))
     except AttributeError: return None
コード例 #4
0
ファイル: Parser.py プロジェクト: wwzcrack/RLOBF
 def jmpdes_symb(self, sym):
     """
     Parse jump destination symbol (address or label): b #0x10010
     :param s: lexeme
     """
     if sym[0] == '#':
         if '.' in sym: return None
         addr = int(sym[1:], 16) & (-2)
         return Types.JumpDes(addr)
     try: return Types.CallDes(self.calldes_symb(sym))
     except: return None
コード例 #5
0
ファイル: Parser.py プロジェクト: wwzcrack/RLOBF
 def symbol_symb(self, s):
     """
     Parse branch destination symbol
     :param s: lexeme
     """
     s = s.strip()
     if s[0] == '*':
         return Types.StarDes(self.stardes_symb(s))
     elif self.call_des:
         return Types.CallDes(self.calldes_symb(s))
     return self.jumpdes_symb(s)
コード例 #6
0
ファイル: Parser.py プロジェクト: wwzcrack/RLOBF
 def symbol_symb(self, sym):
     """
     Parse branch destination symbol
     :param s: lexeme
     """
     return Types.CallDes(self.calldes_symb(sym)) if self.call_des else self.jmpdes_symb(sym)