From 5e1d59feaa353e7ea4179fd0c8104fc4450a7a16 Mon Sep 17 00:00:00 2001 From: bd Date: Wed, 16 Apr 2025 23:53:08 -0400 Subject: Fix instruction opcode numbering issue, use assembler's output --- gui/worker.cc | 62 ++++++++++++++++++++++---------------------------------- src/sim/instr.cc | 13 ++++++------ 2 files changed, 30 insertions(+), 45 deletions(-) diff --git a/gui/worker.cc b/gui/worker.cc index 947a3a4..3825395 100644 --- a/gui/worker.cc +++ b/gui/worker.cc @@ -20,51 +20,37 @@ void Worker::doWork() emit register_storage(this->ct->get_gprs()); signed int b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, - b15, b16, b17, b18, b19; + b15, b16, b17, b18, b19, b20; std::vector p; // I-TYPE / / / / - b0 = 0b00000010000000000001000000001101; // ADDI $2 $0 0x200; - b1 = 0b00000000000000010010100000001101; // ADDI $5 $0 0x1; - b2 = 0b00000000000000000010100010101101; // STORE $5 0($2); - // I-TYPE / / / / - b3 = 0b00000000000000100010100000001101; // ADDI $5 $0 0x2; - b4 = 0b00000000000000010010100010101101; // STORE $5 1($2); - // I-TYPE / / / / - b5 = 0b00000000000000110010100000001101; // ADDI $5 $0 0x3; - b6 = 0b00000000000000100010100010101101; // STORE $5 2($2); - // I-TYPE / / / / - b7 = 0b00000000000001000010100000001101; // ADDI $5 $0 0x4; - b8 = 0b00000000000000110010100010101101; // STORE $5 3($2); - // // I-TYPE / / / / - b9 = 0b00000000000000000010100000001101; // ADDI $5 $0 0x0; - // // I-TYPE / / / / - b10 = 0b00000000000000110011000000001101; // ADDI $6 $0 0x3; - // // J-TYPE / / / - b11 = 0b00000000000000000011100000001010; // JRL CHECK - // // R-TYPE / / / / / - b12 = 0b00000000000100100101000100000100; // ADD $9 $2 $5; - // // I-TYPE / / / / - b13 = 0b00000000000000000011101001000101; // LOAD $7 0($9); (RAW HAZARD)! - // // I-TYPE / / / / - b14 = 0b00000000000000010100001001000101; // LOAD $8 1($9); - // // R-TYPE / / / / / - b15 = 0b00000000000011101000001110000100; // ADD $7 $7 $8; - // I-TYPE / / / / - b16 = 0b00000000000000000011101001101101; // STORE $7 0($9); - b17 = 0b00000000000000010010100101001101; // ADDI $5 $5 0x1; - // // R-TYPE / / / / / - b18 = 0b00000000000111100101001101000000; // CMP $6 $5 - // // J-TYPE / / / - b19 = 0b11111111111111111100000000010110; // bgt LOOP + b0 = 0b00000010000000000001000000001101; + b1 = 0b00000000000000010010100000001101; + b2 = 0b00000000000000000010100010101001; + b3 = 0b00000000000000100010100000001101; + b4 = 0b00000000000000010010100010101001; + b5 = 0b00000000000000110010100000001101; + b6 = 0b00000000000000100010100010101001; + b7 = 0b00000000000001000010100000001101; + b8 = 0b00000000000000110010100010101001; + b9 = 0b00000000000000000010100000001101; + b10 = 0b00000000000000110011000000001101; + b11 = 0b00000000000000000011100000001010; + b12 = 0b00000000000100100101000100000100; + b13 = 0b00000000000000000100100111000101; + b14 = 0b00000000000000010100101000000101; + b15 = 0b00000000000011101000001110000100; + b16 = 0b00000000000000000011101001101001; + b17 = 0b00000000000000010010100101001101; + b18 = 0b00000000000000000101001101000000; + b19 = 0b11111111111111111100100000010110; + b20 = 0b00000000000000000000000000010000; - p = {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, - b10, b11, b12, b13, b14, b15, b16, b17, b18, b19}; + p = {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, + b11, b12, b13, b14, b15, b16, b17, b18, b19, b20}; this->d->load(p); } - - Worker::~Worker() { emit finished(); diff --git a/src/sim/instr.cc b/src/sim/instr.cc index e614de5..8bbd0b5 100644 --- a/src/sim/instr.cc +++ b/src/sim/instr.cc @@ -13,12 +13,11 @@ const std::unordered_map mnemonic_map = { {0b0110100, SUBV}, {0b0111000, MULV}, {0b0111100, DIVV}, {0b1000000, CMP}, {0b1000100, CEV}, {0b000101, LOAD}, {0b001001, LOADV}, {0b0001101, ADDI}, {0b0010001, SUBI}, - {0b0010101, SFTRI}, {0b0011101, SFTLI}, {0b0100001, ANDI}, - {0b0100101, ORI}, {0b0101001, XORI}, {0b0101101, STORE}, - {0b0110001, STOREV}, {0b0000101, CEV}, {0b0000101, LOAD}, - {0b0001001, LOADV}, {0b0001001, LOADV}, {0b0000110, JMP}, - {0b0001010, JRL}, {0b0001110, JAL}, {0b0010010, BEQ}, - {0b0010110, BGT}, {0b0011010, BUF}, {0b0011110, BOF}, - {0b0100010, PUSH}, {0b0100110, POP}, + {0b0010101, SFTRI}, {0b0011001, SFTLI}, {0b0011101, ANDI}, + {0b0100001, ORI}, {0b0100101, XORI}, {0b0101001, STORE}, + {0b0101101, STOREV}, {0b0000110, JMP}, {0b0001010, JRL}, + {0b0001110, JAL}, {0b0010010, BEQ}, {0b0010110, BGT}, + {0b0011010, BUF}, {0b0011110, BOF}, {0b0100010, PUSH}, + {0b0100110, POP}, }; } // namespace instr -- cgit v1.2.3