Exemplo n.º 1
0
 def trace_mem(self, mode, width, addr, val):
     # a possible trap?
     if mode == "R" and addr < self.lib_base and width == 1:
         # is it trapped?
         if val == self.op_reset:
             delta = self.lib_base - addr
             off = delta / 6
             addon = "-%d [%d]  " % (delta, off)
             addon += self._get_fd_str(delta)
             self.trace_mem_int(mode, width, addr, val, text="TRAP", level=logging.INFO, addon=addon)
         # return to caller after trap
         elif val == self.op_rts:
             self.trace_mem_int(mode, width, addr, val, text="T_RTS")
         # native lib jump
         elif val == self.op_jmp:
             delta = self.lib_base - addr
             addon = "-%d  " % delta
             addon += self._get_fd_str(delta)
             self.trace_mem_int(mode, width, addr, val, text="JUMP", level=logging.INFO, addon=addon)
         # something strange
         else:
             self.trace_mem_int(mode, width, addr, val, text="LIB?!", level=logging.WARN)
     else:
         # no use regular access
         LabelStruct.trace_mem(self, mode, width, addr, val)
     return True
Exemplo n.º 2
0
 def trace_mem(self, mode, width, addr, val):
     # a possible trap?
     if mode == 'R' and addr < self.lib_base and width == 1:
         # is it trapped?
         if val & 0xa000 == 0xa000:
             delta = self.lib_base - addr
             off = delta / 6
             addon = "-%d [%d]  " % (delta, off)
             addon += self._get_fd_str(delta)
             self.trace_mem_int(mode,
                                width,
                                addr,
                                val,
                                text="TRAP",
                                level=logging.INFO,
                                addon=addon)
         # native lib jump
         elif val == self.op_jmp:
             delta = self.lib_base - addr
             addon = "-%d  " % delta
             addon += self._get_fd_str(delta)
             self.trace_mem_int(mode,
                                width,
                                addr,
                                val,
                                text="JUMP",
                                level=logging.INFO,
                                addon=addon)
         # something inside jump table
         else:
             self.trace_mem_int(mode,
                                width,
                                addr,
                                val,
                                text="LIB?!",
                                level=logging.WARN)
     else:
         # no use regular access
         LabelStruct.trace_mem(self, mode, width, addr, val)
     return True
Exemplo n.º 3
0
 def trace_mem(self, mode, width, addr, val):
   # a possible trap?
   if mode == 'R' and addr < self.lib_base and width == 1:
     # is it trapped?
     if val == self.op_reset:
       delta = self.lib_base - addr
       off = delta / 6
       addon = "-%d [%d]" % (delta,off)
       self.trace_mem_int(mode, width, addr, val, text="TRAP", level=logging.INFO, addon=addon)
     # return to caller after trap
     elif val == self.op_rts:
       self.trace_mem_int(mode, width, addr, val, text="T_RTS")
     # native lib jump
     elif val == self.op_jmp:
       delta = self.lib_base - addr
       addon = "-%d" % delta
       self.trace_mem_int(mode, width, addr, val, text="JUMP", level=logging.INFO, addon=addon)
     # something strange
     else:
       self.trace_mem_int(mode, width, addr, val, text="LIB?!", level=logging.WARN)      
   else:
     # no use regular access
     LabelStruct.trace_mem(self, mode, width, addr, val)
   return True