#include <simulator-arm.h>
Public 型 | |
enum | Register { no_reg = -1, r0 = 0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, num_registers, sp = 13, lr = 14, pc = 15 } |
Public メソッド | |
Simulator () | |
~Simulator () | |
void | set_register (int reg, int32_t value) |
int32_t | get_register (int reg) const |
void | set_pc (int32_t value) |
int32_t | get_pc () const |
uintptr_t | StackLimit () const |
void | execute () |
v8::internal::Object * | call (int32_t entry, int32_t p0, int32_t p1, int32_t p2, int32_t p3, int32_t p4) |
Static Public メソッド | |
static Simulator * | current () |
Private 型 | |
enum | special_values { bad_lr = -1, end_sim_pc = -2 } |
Private メソッド | |
void | Format (Instr *instr, const char *format) |
bool | ConditionallyExecute (Instr *instr) |
void | SetNZFlags (int32_t val) |
void | SetCFlag (bool val) |
void | SetVFlag (bool val) |
bool | CarryFrom (int32_t left, int32_t right) |
bool | BorrowFrom (int32_t left, int32_t right) |
bool | OverflowFrom (int32_t alu_out, int32_t left, int32_t right, bool addition) |
int32_t | GetShiftRm (Instr *instr, bool *carry_out) |
int32_t | GetImm (Instr *instr, bool *carry_out) |
void | HandleRList (Instr *instr, bool load) |
void | SoftwareInterrupt (Instr *instr) |
uint8_t | ReadBU (int32_t addr) |
int8_t | ReadB (int32_t addr) |
void | WriteB (int32_t addr, uint8_t value) |
void | WriteB (int32_t addr, int8_t value) |
uint16_t | ReadHU (int32_t addr, Instr *instr) |
int16_t | ReadH (int32_t addr, Instr *instr) |
void | WriteH (int32_t addr, uint16_t value, Instr *instr) |
void | WriteH (int32_t addr, int16_t value, Instr *instr) |
int | ReadW (int32_t addr, Instr *instr) |
void | WriteW (int32_t addr, int value, Instr *instr) |
void | DecodeType01 (Instr *instr) |
void | DecodeType2 (Instr *instr) |
void | DecodeType3 (Instr *instr) |
void | DecodeType4 (Instr *instr) |
void | DecodeType5 (Instr *instr) |
void | DecodeType6 (Instr *instr) |
void | DecodeType7 (Instr *instr) |
void | InstructionDecode (Instr *instr) |
Private 変数 | |
int32_t | registers_ [16] |
bool | n_flag_ |
bool | z_flag_ |
bool | c_flag_ |
bool | v_flag_ |
char * | stack_ |
bool | pc_modified_ |
int | icount_ |
Instr * | break_pc_ |
instr_t | break_instr_ |
フレンド | |
class | Debugger |
simulator-arm.h の 71 行で定義されています。
simulator-arm.h の 75 行で定義されています。
enum assembler::arm::Simulator::special_values [private] |
simulator-arm.h の 115 行で定義されています。
assembler::arm::Simulator::Simulator | ( | ) |
simulator-arm.cc の 348 行で定義されています。
参照元 current().
assembler::arm::Simulator::~Simulator | ( | ) |
bool assembler::arm::Simulator::BorrowFrom | ( | int32_t | left, | |
int32_t | right | |||
) | [private] |
simulator-arm.cc の 596 行で定義されています。
参照元 DecodeType01().
Object * assembler::arm::Simulator::call | ( | int32_t | entry, | |
int32_t | p0, | |||
int32_t | p1, | |||
int32_t | p2, | |||
int32_t | p3, | |||
int32_t | p4 | |||
) |
simulator-arm.cc の 1523 行で定義されています。
bool assembler::arm::Simulator::CarryFrom | ( | int32_t | left, | |
int32_t | right | |||
) | [private] |
simulator-arm.cc の 586 行で定義されています。
参照元 DecodeType01().
bool assembler::arm::Simulator::ConditionallyExecute | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 543 行で定義されています。
参照先 assembler::arm::AL, c_flag_, assembler::arm::CC, assembler::arm::Instr::ConditionField(), assembler::arm::CS, assembler::arm::EQ, assembler::arm::GE, assembler::arm::GT, assembler::arm::HI, assembler::arm::LE, assembler::arm::LS, assembler::arm::LT, assembler::arm::MI, n_flag_, assembler::arm::NE, assembler::arm::PL, UNREACHABLE, v_flag_, assembler::arm::VC, assembler::arm::VS, と z_flag_.
Simulator * assembler::arm::Simulator::current | ( | ) | [static] |
simulator-arm.cc の 387 行で定義されています。
参照先 NULL, Simulator(), と assembler::arm::the_sim.
void assembler::arm::Simulator::DecodeType01 | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 906 行で定義されています。
参照先 assembler::arm::ADC, assembler::arm::ADD, assembler::arm::AND, ASSERT, assembler::arm::BIC, assembler::arm::Instr::Bit(), assembler::arm::Instr::Bits(), BorrowFrom(), CarryFrom(), assembler::arm::CMN, assembler::arm::CMP, assembler::arm::EOR, Format(), get_register(), GetImm(), GetShiftRm(), assembler::arm::Instr::HasH(), assembler::arm::Instr::HasL(), assembler::arm::Instr::HasS(), assembler::arm::Instr::HasSign(), assembler::arm::Instr::HasW(), assembler::arm::Instr::ImmedHField(), assembler::arm::Instr::ImmedLField(), assembler::arm::Instr::IsSpecialType0(), assembler::arm::MOV, assembler::arm::MVN, assembler::arm::Instr::OpcodeField(), assembler::arm::ORR, OverflowFrom(), assembler::arm::Instr::PUField(), assembler::arm::Instr::RdField(), ReadB(), ReadH(), ReadHU(), assembler::arm::Instr::RmField(), assembler::arm::Instr::RnField(), assembler::arm::RSB, assembler::arm::RSC, assembler::arm::Instr::RsField(), assembler::arm::SBC, set_register(), SetCFlag(), SetNZFlags(), SetVFlag(), assembler::arm::SUB, assembler::arm::TEQ, assembler::arm::TST, assembler::arm::Instr::TypeField(), UNIMPLEMENTED, UNREACHABLE, と WriteH().
void assembler::arm::Simulator::DecodeType2 | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 1278 行で定義されています。
void assembler::arm::Simulator::DecodeType3 | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 1342 行で定義されています。
void assembler::arm::Simulator::DecodeType4 | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 1393 行で定義されています。
void assembler::arm::Simulator::DecodeType5 | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 1405 行で定義されています。
void assembler::arm::Simulator::DecodeType6 | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 1416 行で定義されています。
void assembler::arm::Simulator::DecodeType7 | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 1421 行で定義されています。
void assembler::arm::Simulator::execute | ( | ) |
simulator-arm.cc の 1491 行で定義されています。
void assembler::arm::Simulator::Format | ( | Instr * | instr, | |
const char * | format | |||
) | [private] |
simulator-arm.cc の 534 行で定義されています。
参照元 DecodeType01().
int32_t assembler::arm::Simulator::get_pc | ( | ) | const |
simulator-arm.cc の 422 行で定義されています。
int32_t assembler::arm::Simulator::get_register | ( | int | reg | ) | const |
simulator-arm.cc の 408 行で定義されています。
参照先 ASSERT, assembler::arm::Instr::kPCReadOffset, num_registers, と registers_.
int32_t assembler::arm::Simulator::GetImm | ( | Instr * | instr, | |
bool * | carry_out | |||
) | [private] |
simulator-arm.cc の 769 行で定義されています。
参照先 c_flag_, assembler::arm::Instr::Immed8Field(), と assembler::arm::Instr::RotateField().
参照元 DecodeType01().
int32_t assembler::arm::Simulator::GetShiftRm | ( | Instr * | instr, | |
bool * | carry_out | |||
) | [private] |
simulator-arm.cc の 625 行で定義されています。
参照先 assembler::arm::ASR, ASSERT, assembler::arm::Instr::Bit(), c_flag_, get_register(), assembler::arm::LSL, assembler::arm::LSR, assembler::arm::Instr::RmField(), assembler::arm::ROR, assembler::arm::Instr::RsField(), assembler::arm::Instr::ShiftAmountField(), assembler::arm::Instr::ShiftField(), UNIMPLEMENTED, と UNREACHABLE.
参照元 DecodeType01().
void assembler::arm::Simulator::HandleRList | ( | Instr * | instr, | |
bool | load | |||
) | [private] |
simulator-arm.cc の 791 行で定義されています。
void assembler::arm::Simulator::InstructionDecode | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 1432 行で定義されています。
bool assembler::arm::Simulator::OverflowFrom | ( | int32_t | alu_out, | |
int32_t | left, | |||
int32_t | right, | |||
bool | addition | |||
) | [private] |
simulator-arm.cc の 605 行で定義されています。
参照元 DecodeType01().
int8_t assembler::arm::Simulator::ReadB | ( | int32_t | addr | ) | [inline, private] |
simulator-arm.cc の 507 行で定義されています。
参照元 DecodeType01().
uint8_t assembler::arm::Simulator::ReadBU | ( | int32_t | addr | ) | [inline, private] |
simulator-arm.cc の 501 行で定義されています。
int16_t assembler::arm::Simulator::ReadH | ( | int32_t | addr, | |
Instr * | instr | |||
) | [inline, private] |
simulator-arm.cc の 468 行で定義されています。
参照元 DecodeType01().
uint16_t assembler::arm::Simulator::ReadHU | ( | int32_t | addr, | |
Instr * | instr | |||
) | [inline, private] |
simulator-arm.cc の 457 行で定義されています。
参照元 DecodeType01().
int assembler::arm::Simulator::ReadW | ( | int32_t | addr, | |
Instr * | instr | |||
) | [inline, private] |
simulator-arm.cc の 435 行で定義されています。
参照先 v8::internal::PrintF(), と UNIMPLEMENTED.
void assembler::arm::Simulator::set_pc | ( | int32_t | value | ) |
simulator-arm.cc の 415 行で定義されています。
参照元 SoftwareInterrupt().
void assembler::arm::Simulator::set_register | ( | int | reg, | |
int32_t | value | |||
) |
simulator-arm.cc の 397 行で定義されています。
参照先 ASSERT, num_registers, pc, pc_modified_, と registers_.
参照元 DecodeType01(), と SoftwareInterrupt().
void assembler::arm::Simulator::SetCFlag | ( | bool | val | ) | [private] |
simulator-arm.cc の 574 行で定義されています。
参照元 DecodeType01().
void assembler::arm::Simulator::SetNZFlags | ( | int32_t | val | ) | [private] |
simulator-arm.cc の 567 行で定義されています。
参照元 DecodeType01().
void assembler::arm::Simulator::SetVFlag | ( | bool | val | ) | [private] |
simulator-arm.cc の 580 行で定義されています。
参照元 DecodeType01().
void assembler::arm::Simulator::SoftwareInterrupt | ( | Instr * | instr | ) | [private] |
simulator-arm.cc の 861 行で定義されています。
参照先 assembler::arm::break_point, assembler::arm::call_rt_r2, assembler::arm::call_rt_r5, assembler::arm::Debugger::Debug(), get_register(), assembler::arm::Instr::kInstrSize, r0, r1, r2, r5, set_pc(), set_register(), assembler::arm::Instr::SwiField(), と UNREACHABLE.
uintptr_t assembler::arm::Simulator::StackLimit | ( | ) | const |
simulator-arm.cc の 526 行で定義されています。
void assembler::arm::Simulator::WriteB | ( | int32_t | addr, | |
int8_t | value | |||
) | [inline, private] |
simulator-arm.cc の 519 行で定義されています。
void assembler::arm::Simulator::WriteB | ( | int32_t | addr, | |
uint8_t | value | |||
) | [inline, private] |
simulator-arm.cc の 513 行で定義されています。
void assembler::arm::Simulator::WriteH | ( | int32_t | addr, | |
uint16_t | value, | |||
Instr * | instr | |||
) | [inline, private] |
simulator-arm.cc の 479 行で定義されています。
参照元 DecodeType01().
void assembler::arm::Simulator::WriteH | ( | int32_t | addr, | |
int16_t | value, | |||
Instr * | instr | |||
) | [inline, private] |
simulator-arm.cc の 490 行で定義されています。
void assembler::arm::Simulator::WriteW | ( | int32_t | addr, | |
int | value, | |||
Instr * | instr | |||
) | [inline, private] |
simulator-arm.cc の 446 行で定義されています。
friend class Debugger [friend] |
simulator-arm.h の 73 行で定義されています。
simulator-arm.h の 191 行で定義されています。
Instr* assembler::arm::Simulator::break_pc_ [private] |
simulator-arm.h の 190 行で定義されています。
bool assembler::arm::Simulator::c_flag_ [private] |
simulator-arm.h の 181 行で定義されています。
参照元 ConditionallyExecute(), GetImm(), と GetShiftRm().
int assembler::arm::Simulator::icount_ [private] |
simulator-arm.h の 187 行で定義されています。
bool assembler::arm::Simulator::n_flag_ [private] |
simulator-arm.h の 179 行で定義されています。
bool assembler::arm::Simulator::pc_modified_ [private] |
simulator-arm.h の 186 行で定義されています。
参照元 set_register().
int32_t assembler::arm::Simulator::registers_[16] [private] |
simulator-arm.h の 178 行で定義されています。
参照元 get_register(), と set_register().
char* assembler::arm::Simulator::stack_ [private] |
simulator-arm.h の 185 行で定義されています。
bool assembler::arm::Simulator::v_flag_ [private] |
simulator-arm.h の 182 行で定義されています。
bool assembler::arm::Simulator::z_flag_ [private] |
simulator-arm.h の 180 行で定義されています。