OrcOpcode

OrcOpcode — Operations

Functions

Types and Values

Description

Functions

OrcOpcodeEmulateFunc ()

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

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);
  /* FIXME or you either support the size, or provide a better function to also
   * handle 64 bits constants, but there is no need to add another API for
   * one specific case. Use a _full passing also the size.
   */
  void (*load_constant_long)(OrcCompiler *compiler, int reg,
      OrcConstant *constant);
  void *target_data;
  void *_unused[4];
} 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