Very, very basic branching. Most compares not yet implemented.

This commit is contained in:
Ben Vanik
2013-05-24 18:28:52 -07:00
parent 7e3268621d
commit 692f85ed4f
3 changed files with 290 additions and 278 deletions

View File

@@ -41,22 +41,19 @@ public:
sdb::FunctionSymbol* symbol();
sdb::FunctionBlock* fn_block();
AsmJit::Label& GetReturnLabel();
AsmJit::Label& GetBlockLabel(uint32_t address);
int CallFunction(sdb::FunctionSymbol* target_symbol, AsmJit::GpVar& lr,
bool tail);
// int branch_to_return();
// int branch_to_return_if(jit_value_t value);
// int branch_to_return_if_not(jit_value_t value);
void TraceKernelCall();
void TraceUserCall();
void TraceInstruction(ppc::InstrData& i);
void TraceInvalidInstruction(ppc::InstrData& i);
void TraceBranch(uint32_t cia);
// int GenerateIndirectionBranch(uint32_t cia, jit_value_t target,
// bool lk, bool likely_local);
int GenerateIndirectionBranch(uint32_t cia, AsmJit::GpVar& target,
bool lk, bool likely_local);
void FillRegisters();
void SpillRegisters();