⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common_iacxl10_2004_3_16.h

📁 自己编写的ARM处理器的指令集仿真
💻 H
字号:
#ifndef COMMON_H#define COMMON_H#define PC 15#define LR 14#define fiq  0#define svc  1#define abt  2#define irq  3#define und  4typedef unsigned long UNL;typedef unsigned char UCR;typedef unsigned long long UNLL;struct bit_stru{    unsigned b : 1;    operator unsigned ();    void operator =(int);};struct bit32_stru{      bit_stru   bits[32];      bit_stru&  operator [] (int index);      void operator = (long t);      operator long ();      void rotate(int);      int operator + (bit32_stru a );};struct CPSR_stru{      unsigned M     :5;      unsigned T     :1;      unsigned F     :1;      unsigned I     :1;      unsigned DNM   :19;      unsigned Q     :1;      unsigned V     :1;      unsigned C     :1;      unsigned Z     :1;      unsigned N     :1;      void operator = ( UNL );      operator UNL ();};struct common_dec_stru{       unsigned mcoder:3;       unsigned flags :4;              void operator = (UNL instruct);};struct miscell_stru{       unsigned SBZ1    : 4;       unsigned b7      : 4;       unsigned SBZ2    : 4;       unsigned Rd1     : 4;       unsigned SBO1    : 4;       unsigned b21     : 1;       unsigned R       : 1;       unsigned Rm      : 4;       unsigned SBO2    : 4;       unsigned mask    : 4;       unsigned SBO3    : 4;       unsigned Rn1     : 4;       unsigned op      : 2;       unsigned imm1    : 4;       unsigned imm2    : 12;       unsigned Rs      : 4;       unsigned Rn2     : 4;       unsigned Rd2     : 4;       void operator = (UNL);};struct mul_ext_stru{      unsigned Rm       : 4;      unsigned b7       : 4;      unsigned Rs       : 4;      unsigned Rn1      : 4;      unsigned Rd1      : 4;      unsigned S1       : 1;      unsigned A        : 1;      unsigned b23      : 1;      unsigned b24      : 1;      unsigned Rdlo     : 4;      unsigned Rdhi     : 4;      unsigned U1       : 1;      unsigned SBZ      : 4;      unsigned Rd2      : 4;      unsigned Rn2      : 4;      unsigned B        : 1;      unsigned L        : 1;      unsigned W        : 1;      unsigned b22      : 1;      unsigned U2       : 1;      unsigned P        : 1;      unsigned Loffset  : 4;      unsigned Hioffset : 4;      unsigned S2       : 1;      unsigned H        : 1;      void operator = (UNL);};struct ARM_type0_stru{       unsigned Rm      : 4;       unsigned b4      : 1;       unsigned shift   : 2;       unsigned shiftm  : 5;       unsigned Rd      : 4;       unsigned Rn      : 4;       unsigned S       : 1;       unsigned opcode  : 4;       unsigned b7      : 1;       unsigned Rs      : 4;       miscell_stru     mis;       mul_ext_stru     mul_ext;       void operator = (UNL);};struct ARM_type1_stru{       unsigned imm    : 8;       unsigned rotate : 4;       unsigned Rd     : 4;       unsigned Rn     : 4;       unsigned S      : 1;       unsigned opcode : 4;       unsigned SBO    : 4;       unsigned mask   : 4;       unsigned b21    : 2;       unsigned R      : 1;       unsigned b24    : 2;       void operator =(UNL );};struct ARM_type2_stru{       unsigned imm : 12;       unsigned Rd  : 4;       unsigned Rn  : 4;       unsigned L   : 1;       unsigned W   : 1;       unsigned B   : 1;       unsigned U   : 1;       unsigned P   : 1;       void operator = (UNL instr);};struct ARM_type3_stru{       unsigned  Rm     : 4;       unsigned  b4     : 1;       unsigned  shift  : 2;       unsigned  shiftm : 5;       unsigned  Rd     : 4;       unsigned  Rn     : 4;       unsigned  L      : 1;       unsigned  W      : 1;       unsigned  B      : 1;       unsigned  U      : 1;       unsigned  P      : 1;       void operator = (UNL);       operator UNL();};struct ARM_type4_stru{   unsigned reg_list : 16;   unsigned Rn       : 4;   unsigned L        : 1;   unsigned W        : 1;   unsigned S        : 1;   unsigned U        : 1;   unsigned P        : 1;   void operator = (UNL);};struct ARM_type5_stru{       unsigned offset : 24;       unsigned L      : 1;       unsigned H      : 1;       void operator = (UNL instr);};struct ARM_type6_stru{       unsigned offset : 8;       unsigned cp_num : 4;       unsigned cRd    : 4;       unsigned Rn     : 4;       unsigned L      : 1;       unsigned W      : 1;       unsigned N      : 1;       unsigned U      : 1;       unsigned P      : 1;       void operator = (UNL);};struct ARM_type7_stru{       unsigned CRm      : 4;       unsigned b4       : 1;       unsigned opcode2  : 4;       unsigned cp_num   : 4;       unsigned cRd      : 4;       unsigned cRn      : 4;       unsigned opcode11 : 4;       unsigned Rd       : 4;       unsigned L        : 1;       unsigned opcode12 : 3;       unsigned swinum   : 24;       unsigned b24      : 1;       void operator =(UNL instr);};struct shifter_stru{       long      operand ;       unsigned  carry_out:1;};       struct result_stru{       int  index;       long address;              void reset();};struct str_stru{                char*  data;             str_stru(char*);              operator char* ();       void operator = ( char* );       void operator + (char*);};struct addr_stru{    UNL  start;    UNL  end;};struct instruct_reg_stru{    long  instruct;    bool valid;    void operator =(UNL);    void operator =(bool);    operator UNL ();};struct oper_info_stru{    long   data;    bool   type;    bool   valid;       operator long ();    void operator = (long data_);};struct shifter_oper_info_stru{    long   data;    bool   type;//0-register number; 1-immediate or else;    bool   valid;    int    mode;    int    mount;    operator long ();    void operator = (long data_);};//实际中没有用到;struct Thu_common_stru{     unsigned mcoder : 3;          void operator = (UNL);     operator UNL ();};struct Thu_type1_stru{     UNL  Rd     : 3;     UNL  Rm1    : 3;     UNL  imm1   : 5;     UNL  opcode : 2;     UNL  Rn     : 3;     UNL  Rm2    : 3;     UNL  opc    : 1;     UNL  b10    : 1;     UNL  imm2   : 3;     void operator = (UNL);};struct Thu_type2_stru{    UNL imm    : 8;    UNL Rd_Rn  : 3;    UNL opcode : 2;    void operator = (UNL);};struct Thu_type3_stru{    UNL Rd_Rn     : 3;    UNL Rm_Rs     : 3;    UNL opcode1   : 4;    UNL b3        : 3;    UNL Rm1       : 3;    UNL H2        : 1;    UNL H1        : 1;    UNL opcode2   : 2;    UNL SBZ       : 3;    UNL L         : 1;    UNL PC_R_OFF  : 8;    UNL Rd1       : 3;    UNL Rd2       : 3;    UNL Rn        : 3;    UNL Rm2       : 3;    UNL opcode3   : 3;    void operator = (UNL);};struct Thu_type4_stru{    UNL  Rd     : 3;    UNL  Rn     : 3;    UNL  offset : 5;    UNL  L      : 1;    UNL  B      : 1;    void operator = (UNL);};struct Thu_type5_stru{    UNL  Rd1      : 3;    UNL  Rn       : 3;    UNL  offset   : 5;    UNL  L        : 1;    UNL  b12      : 1;    UNL  SP_R_OFF : 8;    UNL  Rd2      : 3;    void operator = (UNL);};struct Thu_oth_stru{     UNL   imm1     : 7;   UNL   opc      : 1;   UNL   b4       : 4;   UNL   reg_list : 8;   UNL   R        : 1;   UNL   L        : 1;   UNL   imm2     : 8;   void operator = (UNL);}; struct Thu_type6_stru{   UNL          imm  : 8;   UNL          Rd   : 3;   UNL          SP   : 1;   UNL          b12  : 1;   Thu_oth_stru oth;   void operator = (UNL);};struct Thu_type7_stru{   UNL   reg_list : 8;   UNL   Rn       : 3;   UNL   L        : 1;   UNL   b12      : 1;   UNL   offset   : 8;   UNL   cond     : 4;   UNL   undef    : 8;   UNL   oth      : 4;   UNL   imm      : 8;   void operator = (UNL);};struct Thu_type8_stru{   UNL   offset1 : 11;   UNL   bh      : 2;   UNL   b0      : 1;   UNL   offset2 : 10;   void operator = (UNL);};int count1(long t);//计算变量t中有多少个1;            #endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -