Synopsis
enum OrcArmCond;
enum OrcArmDP;
enum OrcArmRegister;
void orc_arm_do_fixups (OrcCompiler *compiler);
void orc_arm_emit (OrcCompiler *compiler,
orc_uint32 insn);
void orc_arm_emit_add (OrcCompiler *compiler,
int dest,
int src1,
int src2);
void orc_arm_emit_add_imm (OrcCompiler *compiler,
int dest,
int src1,
int value);
void orc_arm_emit_branch (OrcCompiler *compiler,
int cond,
int label);
void orc_arm_emit_bx_lr (OrcCompiler *compiler);
void orc_arm_emit_cmp_imm (OrcCompiler *compiler,
int src1,
int value);
void orc_arm_emit_label (OrcCompiler *compiler,
int label);
void orc_arm_emit_load_reg (OrcCompiler *compiler,
int dest,
int src1,
int offset);
void orc_arm_emit_mov (OrcCompiler *compiler,
int dest,
int src);
void orc_arm_emit_pop (OrcCompiler *compiler,
int regs);
void orc_arm_emit_push (OrcCompiler *compiler,
int regs);
void orc_arm_emit_sub (OrcCompiler *compiler,
int dest,
int src1,
int src2);
void orc_arm_emit_sub_imm (OrcCompiler *compiler,
int dest,
int src1,
int value,
int record);
void orc_arm_loadw (OrcCompiler *compiler,
int dest,
int src1,
int offset);
const char * orc_arm_reg_name (int reg);
void orc_arm_storew (OrcCompiler *compiler,
int dest,
int offset,
int src1);
Details
enum OrcArmCond
typedef enum {
ORC_ARM_COND_EQ = 0,
ORC_ARM_COND_NE,
ORC_ARM_COND_CS,
ORC_ARM_COND_CC,
ORC_ARM_COND_MI,
ORC_ARM_COND_PL,
ORC_ARM_COND_VS,
ORC_ARM_COND_VC,
ORC_ARM_COND_HI,
ORC_ARM_COND_LS,
ORC_ARM_COND_GE,
ORC_ARM_COND_LT,
ORC_ARM_COND_GT,
ORC_ARM_COND_LE,
ORC_ARM_COND_AL,
} OrcArmCond;
enum OrcArmDP
typedef enum {
ORC_ARM_DP_AND = 0,
ORC_ARM_DP_EOR,
ORC_ARM_DP_SUB,
ORC_ARM_DP_RSB,
ORC_ARM_DP_ADD,
ORC_ARM_DP_ADC,
ORC_ARM_DP_SBC,
ORC_ARM_DP_RSC,
ORC_ARM_DP_TST,
ORC_ARM_DP_TEQ,
ORC_ARM_DP_CMP,
ORC_ARM_DP_CMN,
ORC_ARM_DP_ORR,
ORC_ARM_DP_MOV,
ORC_ARM_DP_BIC,
ORC_ARM_DP_MVN
} OrcArmDP;
enum OrcArmRegister
typedef enum {
ORC_ARM_A1 = ORC_GP_REG_BASE+0,
ORC_ARM_A2,
ORC_ARM_A3,
ORC_ARM_A4,
ORC_ARM_V1,
ORC_ARM_V2,
ORC_ARM_V3,
ORC_ARM_V4,
ORC_ARM_V5,
ORC_ARM_V6,
ORC_ARM_V7,
ORC_ARM_V8,
ORC_ARM_IP,
ORC_ARM_SP,
ORC_ARM_LR,
ORC_ARM_PC
} OrcArmRegister;
orc_arm_do_fixups ()
void orc_arm_do_fixups (OrcCompiler *compiler);
orc_arm_emit ()
void orc_arm_emit (OrcCompiler *compiler,
orc_uint32 insn);
orc_arm_emit_add ()
void orc_arm_emit_add (OrcCompiler *compiler,
int dest,
int src1,
int src2);
compiler :
|
|
dest :
|
|
src1 :
|
|
src2 :
|
|
orc_arm_emit_add_imm ()
void orc_arm_emit_add_imm (OrcCompiler *compiler,
int dest,
int src1,
int value);
compiler :
|
|
dest :
|
|
src1 :
|
|
value :
|
|
orc_arm_emit_branch ()
void orc_arm_emit_branch (OrcCompiler *compiler,
int cond,
int label);
compiler :
|
|
cond :
|
|
label :
|
|
orc_arm_emit_bx_lr ()
void orc_arm_emit_bx_lr (OrcCompiler *compiler);
orc_arm_emit_cmp_imm ()
void orc_arm_emit_cmp_imm (OrcCompiler *compiler,
int src1,
int value);
compiler :
|
|
src1 :
|
|
value :
|
|
orc_arm_emit_label ()
void orc_arm_emit_label (OrcCompiler *compiler,
int label);
orc_arm_emit_load_reg ()
void orc_arm_emit_load_reg (OrcCompiler *compiler,
int dest,
int src1,
int offset);
compiler :
|
|
dest :
|
|
src1 :
|
|
offset :
|
|
orc_arm_emit_mov ()
void orc_arm_emit_mov (OrcCompiler *compiler,
int dest,
int src);
orc_arm_emit_pop ()
void orc_arm_emit_pop (OrcCompiler *compiler,
int regs);
orc_arm_emit_push ()
void orc_arm_emit_push (OrcCompiler *compiler,
int regs);
orc_arm_emit_sub ()
void orc_arm_emit_sub (OrcCompiler *compiler,
int dest,
int src1,
int src2);
compiler :
|
|
dest :
|
|
src1 :
|
|
src2 :
|
|
orc_arm_emit_sub_imm ()
void orc_arm_emit_sub_imm (OrcCompiler *compiler,
int dest,
int src1,
int value,
int record);
compiler :
|
|
dest :
|
|
src1 :
|
|
value :
|
|
record :
|
|
orc_arm_loadw ()
void orc_arm_loadw (OrcCompiler *compiler,
int dest,
int src1,
int offset);
compiler :
|
|
dest :
|
|
src1 :
|
|
offset :
|
|
orc_arm_reg_name ()
const char * orc_arm_reg_name (int reg);
orc_arm_storew ()
void orc_arm_storew (OrcCompiler *compiler,
int dest,
int offset,
int src1);
compiler :
|
|
dest :
|
|
offset :
|
|
src1 :
|
|