DGen/SDL
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Macros | Typedefs | Enumerations | Functions | Variables
star.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>

Macros

#define STAR_VERSION   "0.26d-dgen"

Typedefs

typedef unsigned char byte
typedef unsigned short word
typedef unsigned int dword

Enumerations

enum  eamode {
  dreg, areg, aind, ainc,
  adec, adsp, axdp, absw,
  absl, pcdp, pcxd, immd
}
enum  { airlock_stacksize = 8 }

Functions

static void emit (const char *fmt,...)
static void optiondump (FILE *o, char *prefix)
static void gen_banner (void)
static void align (int n)
static void maskaddress (char *reg)
static void begin_source_proc (char *fname)
static void gen_variables (void)
static void airlock_exit (void)
static void airlock_enter (void)
static void cache_ccr (void)
static void writeback_ccr (void)
static void force_context_switch (void)
static void force_trickybit_process (void)
void perform_cached_rebase (void)
static void copy_memory_map (char *map, char *reg)
static void gen_interface (void)
static void gen_flush_interrupts (void)
static void ret_timing (int n)
static void ret_timing_checkpoint (int n)
static void gen_decode_ext (void)
static void gen_basefunction (void)
static void cl2ccr (void)
static void cx2sr (void)
static void ccr2cl (void)
static void sr2cx (void)
static void supervisor (void)
static void gen_readbw (int size)
static void gen_readl (void)
static void gen_writebw (int size)
static void gen_writel (void)
static void gen_group_12_exception (void)
static void gen_privilege_violation (void)
static void usereg (void)
static void selective_usereg (void)
static void selftest (int size)
static void getcondition_l_s_ns (void)
static void getcondition_le_s_ns (void)
static void getcondition (int cc)
static void flags (void)
static void flags_v0 (void)
static void flag_to_z (char *f)
static void c2x (void)
static void adjzero (char *reg)
static void privilegecheck (void)
static void ea_step_precalc (int size, enum eamode mode, int reg)
static void ea_step_read (int size, enum eamode mode, int reg)
static void ea_step_read_signword (enum eamode mode, int reg)
static void ea_step_write (int size, enum eamode mode, int reg)
static void ea_step_postcalc (int size, enum eamode mode, int reg)
static void ea_load (int size, enum eamode mode, int reg)
static void ea_load_signword (enum eamode mode, int reg)
static void ea_store (int size, enum eamode mode, int reg)
static void ea_rmw_load (int size, enum eamode mode, int reg)
static void ea_rmw_store (int size, enum eamode mode, int reg)
static void ea_control (enum eamode mode, int reg)
static void main_ea_load (void)
static void main_ea_load_signed (void)
static void main_ea_store (void)
static void main_ea_rmw_load (void)
static void main_ea_rmw_store (void)
static void main_ea_control (void)
static int main_ea_cycles (void)
static int main_ea_cycles_nofetch (void)
static void prefixes (void)
static void suffixes (void)
static void i_move (void)
static void i_moveq (void)
static void op_to_areg (char *s)
static void i_movea (void)
static void addsuba (char *op)
static void i_adda (void)
static void i_suba (void)
static void i_cmpa (void)
static void i_move_to_sr (void)
static void i_move_to_ccr (void)
static void i_move_from_sr (void)
static void i_move_from_ccr (void)
static void op_to_ccr (char *op)
static void op_to_sr (char *op)
static void i_ori_ccr (void)
static void i_andi_ccr (void)
static void i_eori_ccr (void)
static void i_ori_sr (void)
static void i_andi_sr (void)
static void i_eori_sr (void)
static void i_clr (void)
static void i_tst (void)
static void op_quick (char *op)
static void i_addq (void)
static void i_subq (void)
static void op_to_dn (char *op, int affectx, int logical)
static void i_cmp_dn (void)
static void i_add_dn (void)
static void i_sub_dn (void)
static void i_and_dn (void)
static void i_or_dn (void)
static void op_to_ea (char *op, int logical)
static void i_eor_ea (void)
static void i_add_ea (void)
static void i_sub_ea (void)
static void i_and_ea (void)
static void i_or_ea (void)
static void im_to_ea (char *op, int wback, int affectx, int logical, int c1, int c2, int c3, int c4)
static void i_addi (void)
static void i_subi (void)
static void i_cmpi (void)
static void i_andi (void)
static void i_ori (void)
static void i_eori (void)
static void flick_reg (char *op, int needxf, int affectx, int asl, int rotate)
static void i_lsx_reg (void)
static void i_asx_reg (void)
static void i_rox_reg (void)
static void i_rxx_reg (void)
static void flick_mem (char *op, int needxf, int affectx, int vf, int rotate)
static void i_lsx_mem (void)
static void i_asx_mem (void)
static void i_rox_mem (void)
static void i_rxx_mem (void)
static void i_bra_b (void)
static void i_bra_w (void)
static void i_bsr_b (void)
static void i_bsr_w (void)
static void i_bcc_b (void)
static void i_bcc_w (void)
static void i_dbra (void)
static void i_dbtr (void)
static void i_dbcc (void)
static void i_scc (void)
static void bitop (int static_cycles)
static void i_bitop_imm (void)
static void i_bitop_reg (void)
static void i_jmp (void)
static void i_jsr (void)
static void i_rts (void)
static void i_rtd (void)
static void i_rtr (void)
static void i_rte (void)
static void i_lea (void)
static void i_pea (void)
static void i_nop (void)
static void i_movem_control (void)
static void i_movem_postinc (void)
static void i_movem_predec (void)
static void i_link (void)
static void i_unlk (void)
static void i_move_from_usp (void)
static void i_move_to_usp (void)
static void i_trap (void)
static void i_trapv (void)
static void i_stop (void)
static void i_extbw (void)
static void i_extwl (void)
static void i_swap (void)
static void i_mul (void)
static void i_div (void)
static void i_neg (void)
static void i_negx (void)
static void i_nbcd (void)
static void i_tas (void)
static void i_not (void)
static void i_exg (void)
static void i_cmpm (void)
static void opx_dreg (char *op, char *adjust)
static void opx_adec (char *op, char *adjust)
static void i_addx_dreg (void)
static void i_addx_adec (void)
static void i_subx_dreg (void)
static void i_subx_adec (void)
static void i_abcd_dreg (void)
static void i_abcd_adec (void)
static void i_sbcd_dreg (void)
static void i_sbcd_adec (void)
static void i_movep_mem2reg (void)
static void i_movep_reg2mem (void)
static void i_chk (void)
static void i_illegal (void)
static void i_bkpt (void)
static void i_aline (void)
static void i_fline (void)
static void i_reset (void)
static void i_movec_c_to_r (void)
static void i_movec_r_to_c (void)
static int test (int n, int m, int op)
static void idef (int n, int mask, int op, void(*proc)(void))
static void eadef_all (int n, int m, int op, void(*proc)(void))
static void eadef_all_nobyteaddress (int n, int m, int op, void(*proc)(void))
static void eadef_data (int n, int m, int op, void(*proc)(void))
static void eadef_alterable_nobyteaddress (int n, int m, int op, void(*proc)(void))
static void eadef_data_alterable (int n, int m, int op, void(*proc)(void))
static void eadef_memory_alterable (int n, int m, int op, void(*proc)(void))
static void eadef_control (int n, int m, int op, void(*proc)(void))
static void eadef_control_alterable (int n, int m, int op, void(*proc)(void))
static void defmove (int majorop, int n)
static void decode0 (int n)
static void decode1 (int n)
static void decode2 (int n)
static void decode3 (int n)
static void decode4 (int n)
static void decode5 (int n)
static void decode6 (int n)
static void decode7 (int n)
static void decode8 (int n)
static void decode9 (int n)
static void decodeA (int n)
static void decodeB (int n)
static void decodeC (int n)
static void decodeD (int n)
static void decodeE (int n)
static void decodeF (int n)
static void decodetable (int n)
static void tableentry (int last, int rl)
static char * getparameter (int *ip, int argc, char **argv)
int main (int argc, char **argv)

Variables

static int use_stack = -1
static int hog = -1
static int addressbits = -1
static int cputype = -1
static char * sourcename = NULL
static int routine_counter = 0
static char * x86ax [5] = {"?", "al" , "ax" , "?", "eax" }
static char * x86bx [5] = {"?", "bl" , "bx" , "?", "ebx" }
static char * x86cx [5] = {"?", "cl" , "cx" , "?", "ecx" }
static char * x86dx [5] = {"?", "dl" , "dx" , "?", "edx" }
static char * sizename [5] = {"?", "byte", "word", "?", "dword"}
static int quickvalue [8] = {8, 1, 2, 3, 4, 5, 6, 7}
static char direction [2] = {'r','l'}
static FILE * codefile
static int linenum
static int loop_c_cycles
static int loop_t_cycles
static int loop_x_cycles
static unsigned char loopinfo [0x10000]
static enum eamode main_eamode
static enum eamode main_destmode
static int main_size
static int sizedef
static int main_reg
static int main_cc
static int main_dr
static int main_ir
static int main_qv
static char optcc [5]
static char optrc [5]
static int created_bra_b = 0
static int created_bra_w = 0
static int created_illegal = 0
static int rproc [0x10000]
static byte unique [0x10000]
static int cease_decode

Macro Definition Documentation

#define STAR_VERSION   "0.26d-dgen"

Typedef Documentation

typedef unsigned char byte
typedef unsigned int dword
typedef unsigned short word

Enumeration Type Documentation

anonymous enum
Enumerator:
airlock_stacksize 
enum eamode
Enumerator:
dreg 
areg 
aind 
ainc 
adec 
adsp 
axdp 
absw 
absl 
pcdp 
pcxd 
immd 

Function Documentation

static void addsuba ( char *  op)
static
static void adjzero ( char *  reg)
static
static void airlock_enter ( void  )
static
static void airlock_exit ( void  )
static
static void align ( int  n)
static
static void begin_source_proc ( char *  fname)
static
static void bitop ( int  static_cycles)
static
static void c2x ( void  )
static
static void cache_ccr ( void  )
static
static void ccr2cl ( void  )
static
static void cl2ccr ( void  )
static
static void copy_memory_map ( char *  map,
char *  reg 
)
static
static void cx2sr ( void  )
static
static void decode0 ( int  n)
static
static void decode1 ( int  n)
static
static void decode2 ( int  n)
static
static void decode3 ( int  n)
static
static void decode4 ( int  n)
static
static void decode5 ( int  n)
static
static void decode6 ( int  n)
static
static void decode7 ( int  n)
static
static void decode8 ( int  n)
static
static void decode9 ( int  n)
static
static void decodeA ( int  n)
static
static void decodeB ( int  n)
static
static void decodeC ( int  n)
static
static void decodeD ( int  n)
static
static void decodeE ( int  n)
static
static void decodeF ( int  n)
static
static void decodetable ( int  n)
static
static void defmove ( int  majorop,
int  n 
)
static
static void ea_control ( enum eamode  mode,
int  reg 
)
static
static void ea_load ( int  size,
enum eamode  mode,
int  reg 
)
static
static void ea_load_signword ( enum eamode  mode,
int  reg 
)
static
static void ea_rmw_load ( int  size,
enum eamode  mode,
int  reg 
)
static
static void ea_rmw_store ( int  size,
enum eamode  mode,
int  reg 
)
static
static void ea_step_postcalc ( int  size,
enum eamode  mode,
int  reg 
)
static
static void ea_step_precalc ( int  size,
enum eamode  mode,
int  reg 
)
static
static void ea_step_read ( int  size,
enum eamode  mode,
int  reg 
)
static
static void ea_step_read_signword ( enum eamode  mode,
int  reg 
)
static
static void ea_step_write ( int  size,
enum eamode  mode,
int  reg 
)
static
static void ea_store ( int  size,
enum eamode  mode,
int  reg 
)
static
static void eadef_all ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void eadef_all_nobyteaddress ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void eadef_alterable_nobyteaddress ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void eadef_control ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void eadef_control_alterable ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void eadef_data ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void eadef_data_alterable ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void eadef_memory_alterable ( int  n,
int  m,
int  op,
void(*)(void)  proc 
)
static
static void emit ( const char *  fmt,
  ... 
)
static
static void flag_to_z ( char *  f)
static
static void flags ( void  )
static
static void flags_v0 ( void  )
static
static void flick_mem ( char *  op,
int  needxf,
int  affectx,
int  vf,
int  rotate 
)
static
static void flick_reg ( char *  op,
int  needxf,
int  affectx,
int  asl,
int  rotate 
)
static
static void force_context_switch ( void  )
static
static void force_trickybit_process ( void  )
static
static void gen_banner ( void  )
static
static void gen_basefunction ( void  )
static
static void gen_decode_ext ( void  )
static
static void gen_flush_interrupts ( void  )
static
static void gen_group_12_exception ( void  )
static
static void gen_interface ( void  )
static
static void gen_privilege_violation ( void  )
static
static void gen_readbw ( int  size)
static
static void gen_readl ( void  )
static
static void gen_variables ( void  )
static
static void gen_writebw ( int  size)
static
static void gen_writel ( void  )
static
static void getcondition ( int  cc)
static
static void getcondition_l_s_ns ( void  )
static
static void getcondition_le_s_ns ( void  )
static
static char* getparameter ( int *  ip,
int  argc,
char **  argv 
)
static
static void i_abcd_adec ( void  )
static
static void i_abcd_dreg ( void  )
static
static void i_add_dn ( void  )
static
static void i_add_ea ( void  )
static
static void i_adda ( void  )
static
static void i_addi ( void  )
static
static void i_addq ( void  )
static
static void i_addx_adec ( void  )
static
static void i_addx_dreg ( void  )
static
static void i_aline ( void  )
static
static void i_and_dn ( void  )
static
static void i_and_ea ( void  )
static
static void i_andi ( void  )
static
static void i_andi_ccr ( void  )
static
static void i_andi_sr ( void  )
static
static void i_asx_mem ( void  )
static
static void i_asx_reg ( void  )
static
static void i_bcc_b ( void  )
static
static void i_bcc_w ( void  )
static
static void i_bitop_imm ( void  )
static
static void i_bitop_reg ( void  )
static
static void i_bkpt ( void  )
static
static void i_bra_b ( void  )
static
static void i_bra_w ( void  )
static
static void i_bsr_b ( void  )
static
static void i_bsr_w ( void  )
static
static void i_chk ( void  )
static
static void i_clr ( void  )
static
static void i_cmp_dn ( void  )
static
static void i_cmpa ( void  )
static
static void i_cmpi ( void  )
static
static void i_cmpm ( void  )
static
static void i_dbcc ( void  )
static
static void i_dbra ( void  )
static
static void i_dbtr ( void  )
static
static void i_div ( void  )
static
static void i_eor_ea ( void  )
static
static void i_eori ( void  )
static
static void i_eori_ccr ( void  )
static
static void i_eori_sr ( void  )
static
static void i_exg ( void  )
static
static void i_extbw ( void  )
static
static void i_extwl ( void  )
static
static void i_fline ( void  )
static
static void i_illegal ( void  )
static
static void i_jmp ( void  )
static
static void i_jsr ( void  )
static
static void i_lea ( void  )
static
static void i_link ( void  )
static
static void i_lsx_mem ( void  )
static
static void i_lsx_reg ( void  )
static
static void i_move ( void  )
static
static void i_move_from_ccr ( void  )
static
static void i_move_from_sr ( void  )
static
static void i_move_from_usp ( void  )
static
static void i_move_to_ccr ( void  )
static
static void i_move_to_sr ( void  )
static
static void i_move_to_usp ( void  )
static
static void i_movea ( void  )
static
static void i_movec_c_to_r ( void  )
static
static void i_movec_r_to_c ( void  )
static
static void i_movem_control ( void  )
static
static void i_movem_postinc ( void  )
static
static void i_movem_predec ( void  )
static
static void i_movep_mem2reg ( void  )
static
static void i_movep_reg2mem ( void  )
static
static void i_moveq ( void  )
static
static void i_mul ( void  )
static
static void i_nbcd ( void  )
static
static void i_neg ( void  )
static
static void i_negx ( void  )
static
static void i_nop ( void  )
static
static void i_not ( void  )
static
static void i_or_dn ( void  )
static
static void i_or_ea ( void  )
static
static void i_ori ( void  )
static
static void i_ori_ccr ( void  )
static
static void i_ori_sr ( void  )
static
static void i_pea ( void  )
static
static void i_reset ( void  )
static
static void i_rox_mem ( void  )
static
static void i_rox_reg ( void  )
static
static void i_rtd ( void  )
static
static void i_rte ( void  )
static
static void i_rtr ( void  )
static
static void i_rts ( void  )
static
static void i_rxx_mem ( void  )
static
static void i_rxx_reg ( void  )
static
static void i_sbcd_adec ( void  )
static
static void i_sbcd_dreg ( void  )
static
static void i_scc ( void  )
static
static void i_stop ( void  )
static
static void i_sub_dn ( void  )
static
static void i_sub_ea ( void  )
static
static void i_suba ( void  )
static
static void i_subi ( void  )
static
static void i_subq ( void  )
static
static void i_subx_adec ( void  )
static
static void i_subx_dreg ( void  )
static
static void i_swap ( void  )
static
static void i_tas ( void  )
static
static void i_trap ( void  )
static
static void i_trapv ( void  )
static
static void i_tst ( void  )
static
static void i_unlk ( void  )
static
static void idef ( int  n,
int  mask,
int  op,
void(*)(void)  proc 
)
static
static void im_to_ea ( char *  op,
int  wback,
int  affectx,
int  logical,
int  c1,
int  c2,
int  c3,
int  c4 
)
static
int main ( int  argc,
char **  argv 
)
static void main_ea_control ( void  )
static
static int main_ea_cycles ( void  )
static
static int main_ea_cycles_nofetch ( void  )
static
static void main_ea_load ( void  )
static
static void main_ea_load_signed ( void  )
static
static void main_ea_rmw_load ( void  )
static
static void main_ea_rmw_store ( void  )
static
static void main_ea_store ( void  )
static
static void maskaddress ( char *  reg)
static
static void op_quick ( char *  op)
static
static void op_to_areg ( char *  s)
static
static void op_to_ccr ( char *  op)
static
static void op_to_dn ( char *  op,
int  affectx,
int  logical 
)
static
static void op_to_ea ( char *  op,
int  logical 
)
static
static void op_to_sr ( char *  op)
static
static void optiondump ( FILE *  o,
char *  prefix 
)
static
static void opx_adec ( char *  op,
char *  adjust 
)
static
static void opx_dreg ( char *  op,
char *  adjust 
)
static
void perform_cached_rebase ( void  )
static void prefixes ( void  )
static
static void privilegecheck ( void  )
static
static void ret_timing ( int  n)
static
static void ret_timing_checkpoint ( int  n)
static
static void selective_usereg ( void  )
static
static void selftest ( int  size)
static
static void sr2cx ( void  )
static
static void suffixes ( void  )
static
static void supervisor ( void  )
static
static void tableentry ( int  last,
int  rl 
)
static
static int test ( int  n,
int  m,
int  op 
)
static
static void usereg ( void  )
static
static void writeback_ccr ( void  )
static

Variable Documentation

int addressbits = -1
static
int cease_decode
static
FILE* codefile
static
int cputype = -1
static
int created_bra_b = 0
static
int created_bra_w = 0
static
int created_illegal = 0
static
char direction[2] = {'r','l'}
static
int hog = -1
static
int linenum
static
int loop_c_cycles
static
int loop_t_cycles
static
int loop_x_cycles
static
unsigned char loopinfo[0x10000]
static
int main_cc
static
enum eamode main_destmode
static
int main_dr
static
enum eamode main_eamode
static
int main_ir
static
int main_qv
static
int main_reg
static
int main_size
static
char optcc[5]
static
char optrc[5]
static
int quickvalue[8] = {8, 1, 2, 3, 4, 5, 6, 7}
static
int routine_counter = 0
static
int rproc[0x10000]
static
int sizedef
static
char* sizename[5] = {"?", "byte", "word", "?", "dword"}
static
char* sourcename = NULL
static
byte unique[0x10000]
static
int use_stack = -1
static
char* x86ax[5] = {"?", "al" , "ax" , "?", "eax" }
static
char* x86bx[5] = {"?", "bl" , "bx" , "?", "ebx" }
static
char* x86cx[5] = {"?", "cl" , "cx" , "?", "ecx" }
static
char* x86dx[5] = {"?", "dl" , "dx" , "?", "edx" }
static