51 std::array<uint8_t, 2>
asid = {std::numeric_limits<uint8_t>::max(), std::numeric_limits<uint8_t>::max()};
78 std::remove_copy(std::begin(instr.destination_registers), std::end(instr.destination_registers), std::back_inserter(this->destination_registers), 0);
79 std::remove_copy(std::begin(instr.source_registers), std::end(instr.source_registers), std::back_inserter(this->source_registers), 0);
80 std::remove_copy(std::begin(instr.destination_memory), std::end(instr.destination_memory), std::back_inserter(this->destination_memory), 0);
81 std::remove_copy(std::begin(instr.source_memory), std::end(instr.source_memory), std::back_inserter(this->source_memory), 0);
93 if (!reads_sp && !reads_flags && writes_ip && !reads_other) {
98 }
else if (!reads_sp && !reads_ip && !reads_flags && writes_ip && reads_other) {
103 }
else if (!reads_sp && reads_ip && !writes_sp && writes_ip && (reads_flags || reads_other)) {
108 }
else if (reads_sp && reads_ip && writes_sp && writes_ip && !reads_flags && !reads_other) {
113 }
else if (reads_sp && reads_ip && writes_sp && writes_ip && !reads_flags && reads_other) {
118 }
else if (reads_sp && !reads_ip && writes_sp && writes_ip) {
123 }
else if (writes_ip) {
branch_type
Definition: instruction.h:30
@ BRANCH_INDIRECT_CALL
Definition: instruction.h:36
@ BRANCH_OTHER
Definition: instruction.h:38
@ NOT_BRANCH
Definition: instruction.h:31
@ BRANCH_DIRECT_JUMP
Definition: instruction.h:32
@ BRANCH_DIRECT_CALL
Definition: instruction.h:35
@ BRANCH_RETURN
Definition: instruction.h:37
@ BRANCH_CONDITIONAL
Definition: instruction.h:34
@ BRANCH_INDIRECT
Definition: instruction.h:33
constexpr char REG_STACK_POINTER
Definition: trace_instruction.h:25
constexpr char REG_INSTRUCTION_POINTER
Definition: trace_instruction.h:27
constexpr char REG_FLAGS
Definition: trace_instruction.h:26
Definition: trace_instruction.h:50
unsigned char asid[2]
Definition: trace_instruction.h:64
Definition: instruction.h:41
uint64_t branch_target
Definition: instruction.h:54
std::size_t num_mem_ops() const
Definition: instruction.h:137
bool branch_prediction
Definition: instruction.h:48
uint8_t executed
Definition: instruction.h:60
bool branch_taken
Definition: instruction.h:47
uint64_t instr_id
Definition: instruction.h:42
std::vector< std::reference_wrapper< ooo_model_instr > > registers_instrs_depend_on_me
Definition: instruction.h:72
bool is_branch
Definition: instruction.h:46
unsigned completed_mem_ops
Definition: instruction.h:62
uint64_t event_cycle
Definition: instruction.h:44
std::array< uint8_t, 2 > asid
Definition: instruction.h:51
ooo_model_instr(uint8_t cpu, input_instr instr)
Definition: instruction.h:134
bool branch_mispredicted
Definition: instruction.h:49
uint8_t scheduled
Definition: instruction.h:59
std::vector< uint8_t > source_registers
Definition: instruction.h:66
std::vector< uint64_t > destination_memory
Definition: instruction.h:68
static bool program_order(const ooo_model_instr &lhs, const ooo_model_instr &rhs)
Definition: instruction.h:139
uint8_t fetched
Definition: instruction.h:57
ooo_model_instr(uint8_t, cloudsuite_instr instr)
Definition: instruction.h:135
std::vector< uint8_t > destination_registers
Definition: instruction.h:65
std::vector< uint64_t > source_memory
Definition: instruction.h:69
int num_reg_dependent
Definition: instruction.h:63
uint8_t decoded
Definition: instruction.h:58
uint64_t ip
Definition: instruction.h:43
uint8_t dib_checked
Definition: instruction.h:56
ooo_model_instr(T instr, std::array< uint8_t, 2 > local_asid)
Definition: instruction.h:76