OrcOpcode: Orc Reference Manual

## OrcOpcode OrcOpcode — Operations |

## Functions

void | (*OrcOpcodeEmulateFunc) ()
#define | ORC_STATIC_OPCODE_ACCUMULATOR
OrcStaticOpcode * | orc_opcode_find_by_name ()
void | orc_opcode_init ()
int | orc_opcode_register_static ()
int | orc_opcode_set_find_by_name ()
OrcOpcodeSet * | orc_opcode_set_get ()
OrcRuleSet * | orc_rule_set_new ()
const char * | orc_target_get_asm_preamble ()
OrcTarget * | orc_target_get_by_name ()
OrcTarget * | orc_target_get_default ()
unsigned int | orc_target_get_default_flags ()
const char * | orc_target_get_name ()
OrcRule * | orc_target_get_rule ()
void | orc_target_register ()

## Types and Values

struct | OrcOpcodeExecutor
struct | OrcOpcodeSet
struct | OrcRuleSet
struct | OrcStaticOpcode
| OrcTarget
#define | ORC_OPCODE_N_ARGS
#define | ORC_STATIC_OPCODE_N_DEST
#define | ORC_STATIC_OPCODE_N_SRC

## Description

## Functions

### OrcOpcodeEmulateFunc ()

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

### ORC_STATIC_OPCODE_ACCUMULATOR

    #define ORC_STATIC_OPCODE_ACCUMULATOR (1<<0)

### 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);

## Types and Values

### 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_N_DEST

    #define ORC_STATIC_OPCODE_N_DEST 2

### ORC_STATIC_OPCODE_N_SRC

    #define ORC_STATIC_OPCODE_N_SRC 4