"I am a person who works hard and plays hard."

Yuan Wei
Second Year Graduate Student Department of Computer Science
University of Virginia Charlottesville, VA 22903
Email: yw3f@cs.virginia.edu


Source Code Analysis

Main Page   Compound List   File List   Compound Members   File Members  

machine.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include "host.h"
#include "misc.h"
#include "machine.h"
#include "eval.h"
#include "regs.h"
#include "machine.def"

Include dependency graph for machine.c:

Include dependency graph

Go to the source code of this file.

Defines

Functions

Variables


Define Documentation

#define CONNECT OP       offset = max_offset+1; md_opoffset[OP] = offset;
 

#define CONNECT OP   
 

#define CONNECT OP   
 

#define CONNECT OP   
 

#define CONNECT OP   
 

#define CONNECT OP   
 

#define CONNECT OP   
 

#define DEFINST OP,
MSK,
NAME,
OPFORM,
RES,
FLAGS,
O1,
O2,
I1,
I2,
I3   
 

Value:

if ((MSK)+offset >= MD_MAX_MASK)                                        \
    panic("MASK_MAX is too small, index==%d", (MSK)+offset);            \
  if (md_mask2op[(MSK)+offset])                                         \
    fatal("doubly defined opcode, index==%d", (MSK)+offset);            \
  md_mask2op[(MSK)+offset]=(OP); max_offset=MAX(max_offset,(MSK)+offset);

#define DEFINST OP,
MSK,
NAME,
OPFORM,
RES,
FLAGS,
O1,
O2,
I1,
I2,
I3       FLAGS,
 

#define DEFINST OP,
MSK,
NAME,
OPFORM,
RES,
FLAGS,
O1,
O2,
I1,
I2,
I3       RES,
 

#define DEFINST OP,
MSK,
NAME,
OPFORM,
RES,
FLAGS,
O1,
O2,
I1,
I2,
I3       OPFORM,
 

#define DEFINST OP,
MSK,
NAME,
OPFORM,
RES,
FLAGS,
O1,
O2,
I1,
I2,
I3       NAME,
 

#define DEFINST OP,
MSK,
NAME,
OPFORM,
RES,
FLAGS,
O1,
O2,
I1,
I2,
I3       0,
 

#define DEFINST OP,
MSK,
NAME,
OPFORM,
RES,
FLAGS,
O1,
O2,
I1,
I2,
I3       0,
 

#define DEFLINK OP,
MSK,
NAME,
MASK,
SHIFT   
 

Value:

if ((MSK)+offset >= MD_MAX_MASK)                                        \
    panic("MASK_MAX is too small, index==%d", (MSK)+offset);            \
  if (md_mask2op[(MSK)+offset])                                         \
    fatal("doubly defined opcode, index==%d", (MSK)+offset);            \
  md_mask2op[(MSK)+offset]=(OP); max_offset=MAX(max_offset,(MSK)+offset);

#define DEFLINK OP,
MSK,
NAME,
MASK,
SHIFT       NA,
 

#define DEFLINK OP,
MSK,
NAME,
MASK,
SHIFT       FUClamd_NA,
 

#define DEFLINK OP,
MSK,
NAME,
MASK,
SHIFT       NULL,
 

#define DEFLINK OP,
MSK,
NAME,
MASK,
SHIFT       NAME,
 

#define DEFLINK OP,
MSK,
NAME,
SHIFT,
MASK       SHIFT,
 

#define DEFLINK OP,
MSK,
NAME,
SHIFT,
MASK       MASK,
 


Function Documentation

void md_init_decoder void   
 

Definition at line 25445 of file machine.c.

Referenced by main().

void md_print_creg md_ctrl_t    regs,
int    reg,
FILE *    stream
 

Definition at line 21235 of file machine.c.

void md_print_cregs md_ctrl_t    regs,
FILE *    stream
 

Definition at line 21254 of file machine.c.

void md_print_fpreg md_fpr_t    regs,
int    reg,
FILE *    stream
 

Definition at line 21212 of file machine.c.

void md_print_fpregs md_fpr_t    regs,
FILE *    stream
 

Definition at line 21219 of file machine.c.

void md_print_insn md_inst_t    inst,
md_addr_t    pc,
FILE *    stream
 

Definition at line 29624 of file machine.c.

void md_print_ireg md_gpr_t    regs,
int    reg,
FILE *    stream
 

Definition at line 21190 of file machine.c.

void md_print_iregs md_gpr_t    regs,
FILE *    stream
 

Definition at line 21197 of file machine.c.

char* md_reg_name enum md_reg_type    rt,
int    reg
 

Definition at line 21070 of file machine.c.

char* md_reg_obj struct regs_t   regs,
int    is_write,
enum md_reg_type    rt,
int    reg,
struct eval_value_t   val
 

Definition at line 21085 of file machine.c.

word_t md_xor_regs struct regs_t   regs
 

Definition at line 21264 of file machine.c.


Variable Documentation

char* md_amode_str[md_amode_NUM]
 

Initial value:

{
  "(const)",            
  "(gp + const)",       
  "(sp + const)",       
  "(fp + const)",       
  "(reg + const)",      
  "(reg + reg)"         
}

Definition at line 20926 of file machine.c.

char* md_fu2name[NUM_FU_CLASSES]
 

Initial value:

 {
  NULL, 
  "fu-int-ALU",
  "fu-int-multiply",
  "fu-int-divide",
  "fu-FP-add/sub",
  "fu-FP-comparison",
  "fu-FP-conversion",
  "fu-FP-multiply",
  "fu-FP-divide",
  "fu-FP-sqrt",
  "rd-port",
  "wr-port"
}

Definition at line 20911 of file machine.c.

enum md_opcode md_mask2op[MD_MAX_MASK+1]
 

Definition at line 117 of file machine.c.

md_inst_t MD_NOP_INST = 0x43ff041f
 

Definition at line 114 of file machine.c.

unsigned int md_op2flags[OP_MAX]
 

Definition at line 21285 of file machine.c.

char* md_op2format[OP_MAX]
 

Definition at line 12595 of file machine.c.

enum md_fu_class md_op2fu[OP_MAX]
 

Definition at line 16753 of file machine.c.

char* md_op2name[OP_MAX]
 

Definition at line 8437 of file machine.c.

unsigned int md_opmask[OP_MAX]
 

Definition at line 121 of file machine.c.

unsigned int md_opoffset[OP_MAX]
 

Definition at line 118 of file machine.c.

unsigned int md_opshift[OP_MAX]
 

Definition at line 4279 of file machine.c.

struct md_reg_names_t md_reg_names[]
 

Definition at line 20937 of file machine.c.



UVa CS Department of Computer Science
School of Engineering, University of Virginia
151 Engineer's Way, P.O. Box 400740
Charlottesville, Virginia 22904-4740

(434) 982-2200  Fax: (434) 982-2214