diff options
author | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-03-17 20:49:22 +0100 |
---|---|---|
committer | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-03-17 20:49:22 +0100 |
commit | e26d895762e7a802c4b6c6a970a63309f7d0fdb7 (patch) | |
tree | f2ccf9698c8eca31d78fe611963293338326e6c1 /qtmips_machine/registers.cpp | |
parent | 6312493089c8325fa6097fa7d77046bde7e75f2a (diff) | |
download | qtmips-e26d895762e7a802c4b6c6a970a63309f7d0fdb7.tar.gz qtmips-e26d895762e7a802c4b6c6a970a63309f7d0fdb7.tar.bz2 qtmips-e26d895762e7a802c4b6c6a970a63309f7d0fdb7.zip |
Registers and cop0 state updates and reads are visualized by highlights.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/registers.cpp')
-rw-r--r-- | qtmips_machine/registers.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/qtmips_machine/registers.cpp b/qtmips_machine/registers.cpp index fa9731a..ed27ec6 100644 --- a/qtmips_machine/registers.cpp +++ b/qtmips_machine/registers.cpp @@ -87,25 +87,31 @@ void Registers::pc_abs_jmp_28(std::uint32_t address) { } std::uint32_t Registers::read_gp(std::uint8_t i) const { + std::uint32_t value; SANITY_ASSERT(i < 32, QString("Trying to read from register ") + QString(i)); if (!i) // $0 always reads as 0 return 0; - return this->gp[i - 1]; + value = this->gp[i - 1]; + emit gp_read(i, value); + return value; } void Registers::write_gp(std::uint8_t i, std::uint32_t value) { SANITY_ASSERT(i < 32, QString("Trying to write to register ") + QString(i)); if (i == 0) // Skip write to $0 return; - emit gp_update(i, value); this->gp[i - 1] = value; + emit gp_update(i, value); } std::uint32_t Registers::read_hi_lo(bool is_hi) const { + std::uint32_t value; if (is_hi) - return hi; + value = hi; else - return lo; + value = lo; + emit hi_lo_read(is_hi, value); + return value; } void Registers::write_hi_lo(bool is_hi, std::uint32_t value) { |