From 61d21b2fcd0586dca06fb8891be52b07fb9f17c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Czeka=C5=84ski?= Date: Tue, 10 Sep 2019 17:09:18 +0200 Subject: [PATCH] debugger: print offset as signed hex value --- src/debugger/debugger.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/debugger/debugger.cpp b/src/debugger/debugger.cpp index 9c4dd0c..94cfc03 100644 --- a/src/debugger/debugger.cpp +++ b/src/debugger/debugger.cpp @@ -135,6 +135,14 @@ std::string cop2reg(unsigned int n) { Instruction mapSpecialInstruction(mips::Opcode& i); +std::string hexWithSign(int16_t hex) { + if (hex >= 0) { + return fmt::format("0x{:04x}", static_cast(hex)); + } + + return fmt::format("-0x{:04x}", static_cast(hex * -1)); +} + Instruction decodeInstruction(mips::Opcode& i) { Instruction ins; ins.opcode = i; @@ -142,7 +150,7 @@ Instruction decodeInstruction(mips::Opcode& i) { #define U16(x) static_cast(x) #define R(x) reg(x).c_str() -#define LOADTYPE fmt::format("{}, 0x{:04x}({})", R(i.rt), U16(i.offset), R(i.rs)); +#define LOADTYPE fmt::format("{}, {}({})", R(i.rt), hexWithSign(i.offset), R(i.rs)); #define ITYPE fmt::format("{}, {}, 0x{:04x}", R(i.rt), R(i.rs), U16(i.offset)) #define JTYPE fmt::format("0x{:x}", i.target * 4) #define O(n, m, d) \