Repository URL to install this package:
| 
      
        
        
        Version: 
        
         
          
          9.0~240925-3.fc42  ▾
        
         | 
| 
    
    idapro-debugsource
  
    /
        
    usr
  
        /
        
    src
  
        /
        
    debug
  
        /
        
    idapro-9.0~240925-3.fc42.x86_64
  
        /
        
    module
  
        /
        
    tlcs900
  
        /
        tosh.hpp
   | 
|---|
/*
 *      TLCS900 processor module for IDA.
 *      Copyright (c) 1998-2006 Konstantin Norvatoff, <konnor@bk.ru>
 *      Freeware.
 */
#ifndef _TOSH_HPP
#define _TOSH_HPP
#include <ida.hpp>
#include <idp.hpp>
#include "../idaidp.hpp"
#include "ins.hpp"
#include <diskio.hpp>
#include "../iohandler.hpp"
#define PROCMOD_NAME            tlcs900
#define PROCMOD_NODE_NAME       "$ TLCS900"
//-----------------------------------------------
// Increment/decrement
#define URB_DECR        (0x80)  // decrement
#define URB_DCMASK      (0x07)  // mask or decrement
#define URB_UDEC        (0x40)  // singleton decrement
#define URB_UINC        (0x20)  // signleto increment
// specflag1 bits
#define URB_WORD        (1)     // second index register is word
#define URB_LDA         (2)     // insn uses address not the content
#define URB_LDA2        (4)     // same, but may constant!
//------------------------------------------------------------------------
enum T900_registers
{
  rNULLReg,
  rW, rA, rB, rC, rD, rE, rH, rL,
  rWA, rBC, rDE, rHL, rIX, rIY, rIZ, rSP,
  rXWA, rXBC, rXDE, rXHL, rXIX, rXIY, rXIZ, rXSP,
  rIXL, rIXH, rIYL, rIYH, rIZL, rIZH, rSPL, rSPH,
  rVcs, rVds
};
// phrases
enum T900_phrases
{
  rNULLPh,
  fCF,fCLT,fCLE,fCULE,fCPE,fCMI,fCZ,fCC,
  fCT,fCGE,fCGT,fCUGT,fCPO,fCPL,fCNZ,fCNC,
  fSF,fSF1,
  fSR, fPC
};
//------------------------------------------------------------------
struct tlcs900_iohandler_t : public iohandler_t
{
  tlcs900_iohandler_t(netnode &nn) : iohandler_t(nn) {}
};
struct tlcs900_t : public procmod_t
{
  netnode helper;
  tlcs900_iohandler_t ioh = tlcs900_iohandler_t(helper);
  bool flow = false;
  virtual ssize_t idaapi on_event(ssize_t msgid, va_list va) override;
  void handle_operand(const insn_t &insn, const op_t &x, bool is_forced, bool isload);
  int T900_emu(const insn_t &insn);
  void T900_header(outctx_t &ctx);
  void T900_segstart(outctx_t &ctx, segment_t *Sarea) const;
  void T900_footer(outctx_t &ctx) const;
  void load_from_idb();
};
extern int data_id;
//------------------------------------------------------------------------
int  idaapi T900_ana(insn_t *_insn);
void idaapi T900_data(outctx_t &ctx, bool analyze_only);
#endif