diff options
author | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-02-05 12:46:08 +0100 |
---|---|---|
committer | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-02-05 12:46:08 +0100 |
commit | e9ffa56110da05a6938ad690872cdac6d48fd586 (patch) | |
tree | 22da4ca26d3cfe6e7277b92843209300b5a99e09 /qtmips_machine/core.h | |
parent | fc343acc4d81d06e5cba92b74de3565b6d12dfcf (diff) | |
download | qtmips-e9ffa56110da05a6938ad690872cdac6d48fd586.tar.gz qtmips-e9ffa56110da05a6938ad690872cdac6d48fd586.tar.bz2 qtmips-e9ffa56110da05a6938ad690872cdac6d48fd586.zip |
Reorganize PC handling and implement full REGIMM decode.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/core.h')
-rw-r--r-- | qtmips_machine/core.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/qtmips_machine/core.h b/qtmips_machine/core.h index 6f9509f..ac0ee81 100644 --- a/qtmips_machine/core.h +++ b/qtmips_machine/core.h @@ -70,6 +70,8 @@ signals: void instruction_writeback(const machine::Instruction &inst); void instruction_program_counter(const machine::Instruction &inst); + void fetch_jump_reg_value(std::uint32_t); + void fetch_jump_value(std::uint32_t); void fetch_branch_value(std::uint32_t); void decode_instruction_value(std::uint32_t); void decode_reg1_value(std::uint32_t); @@ -136,6 +138,10 @@ protected: bool alu_req_rt; // requires rt value for ALU or SW bool bjr_req_rs; // requires rs for beq, bne, blez, bgtz, jr nad jalr bool bjr_req_rt; // requires rt for beq, bne + bool branch; // branch instruction + bool jump; // jump + bool bj_not; // negate branch condition + bool bgt_blez; // BGTZ/BLEZ instead of BGEZ/BLTZ bool forward_m_d_rs; // forwarding required for beq, bne, blez, bgtz, jr nad jalr bool forward_m_d_rt; // forwarding required for beq, bne enum AluOp aluop; // Decoded ALU operation |