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