OrcOpcode

OrcOpcode — Operations

Synopsis

void                (*OrcOpcodeEmulateFunc)             (OrcOpcodeExecutor *ex,
                                                         void *user);
struct              OrcOpcodeExecutor;
struct              OrcOpcodeSet;
struct              OrcRuleSet;
struct              OrcStaticOpcode;
                    OrcTarget;
#define             ORC_OPCODE_N_ARGS
#define             ORC_STATIC_OPCODE_ACCUMULATOR
#define             ORC_STATIC_OPCODE_N_DEST
#define             ORC_STATIC_OPCODE_N_SRC
OrcStaticOpcode *   orc_opcode_find_by_name             (const char *name);
void                orc_opcode_init                     (void);
int                 orc_opcode_register_static          (OrcStaticOpcode *sopcode,
                                                         char *prefix);
int                 orc_opcode_set_find_by_name         (OrcOpcodeSet *opcode_set,
                                                         const char *name);
OrcOpcodeSet *      orc_opcode_set_get                  (const char *name);
OrcRuleSet *        orc_rule_set_new                    (OrcOpcodeSet *opcode_set,
                                                         OrcTarget *target,
                                                         unsigned int required_flags);
const char *        orc_target_get_asm_preamble         (const char *target);
OrcTarget *         orc_target_get_by_name              (const char *target_name);
OrcTarget *         orc_target_get_default              (void);
unsigned int        orc_target_get_default_flags        (OrcTarget *target);
const char *        orc_target_get_name                 (OrcTarget *target);
OrcRule *           orc_target_get_rule                 (OrcTarget *target,
                                                         OrcStaticOpcode *opcode,
                                                         unsigned int target_flags);
void                orc_target_register                 (OrcTarget *target);

Description

Details

OrcOpcodeEmulateFunc ()

void                (*OrcOpcodeEmulateFunc)             (OrcOpcodeExecutor *ex,
                                                         void *user);


struct OrcOpcodeExecutor

struct OrcOpcodeExecutor {
};

The OrcOpcodeExecutor structure has no public members


struct OrcOpcodeSet

struct OrcOpcodeSet {
};

The OrcOpcodeSet structure has no public members


struct OrcRuleSet

struct OrcRuleSet {
};

The OrcRuleSet structure has no public members


struct OrcStaticOpcode

struct OrcStaticOpcode {
  char name[16];
  unsigned int flags;
  int dest_size[ORC_STATIC_OPCODE_N_DEST];
  int src_size[ORC_STATIC_OPCODE_N_SRC];
  OrcOpcodeEmulateNFunc emulateN;
};


OrcTarget

typedef struct {
  const char *name;
  orc_bool executable;
  int data_register_offset;

  unsigned int (*get_default_flags)(void);
  void (*compiler_init)(OrcCompiler *compiler);
  void (*compile)(OrcCompiler *compiler);

  OrcRuleSet rule_sets[ORC_N_RULE_SETS];
  int n_rule_sets;

  const char * (*get_asm_preamble)(void);
  void (*load_constant)(OrcCompiler *compiler, int reg, int size, int value);
  const char * (*get_flag_name)(int shift);
  void (*flush_cache) (OrcCode *code);
  void (*load_constant_long)(OrcCompiler *compiler, int reg,
      OrcConstant *constant);

  void *_unused[5];
} OrcTarget;

ORC_OPCODE_N_ARGS

#define ORC_OPCODE_N_ARGS 4


ORC_STATIC_OPCODE_ACCUMULATOR

#define ORC_STATIC_OPCODE_ACCUMULATOR (1<<0)


ORC_STATIC_OPCODE_N_DEST

#define ORC_STATIC_OPCODE_N_DEST 2


ORC_STATIC_OPCODE_N_SRC

#define ORC_STATIC_OPCODE_N_SRC 4


orc_opcode_find_by_name ()

OrcStaticOpcode *   orc_opcode_find_by_name             (const char *name);


orc_opcode_init ()

void                orc_opcode_init                     (void);


orc_opcode_register_static ()

int                 orc_opcode_register_static          (OrcStaticOpcode *sopcode,
                                                         char *prefix);


orc_opcode_set_find_by_name ()

int                 orc_opcode_set_find_by_name         (OrcOpcodeSet *opcode_set,
                                                         const char *name);


orc_opcode_set_get ()

OrcOpcodeSet *      orc_opcode_set_get                  (const char *name);


orc_rule_set_new ()

OrcRuleSet *        orc_rule_set_new                    (OrcOpcodeSet *opcode_set,
                                                         OrcTarget *target,
                                                         unsigned int required_flags);


orc_target_get_asm_preamble ()

const char *        orc_target_get_asm_preamble         (const char *target);


orc_target_get_by_name ()

OrcTarget *         orc_target_get_by_name              (const char *target_name);


orc_target_get_default ()

OrcTarget *         orc_target_get_default              (void);


orc_target_get_default_flags ()

unsigned int        orc_target_get_default_flags        (OrcTarget *target);


orc_target_get_name ()

const char *        orc_target_get_name                 (OrcTarget *target);


orc_target_get_rule ()

OrcRule *           orc_target_get_rule                 (OrcTarget *target,
                                                         OrcStaticOpcode *opcode,
                                                         unsigned int target_flags);


orc_target_register ()

void                orc_target_register                 (OrcTarget *target);