OrcOpcode

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