1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include "tst_machine.h"
#include "instruction.h"
using namespace machine;
// Test that we are correctly encoding instructions in constructor
void MachineTests::instruction() {
QCOMPARE(Instruction(0x00), Instruction(0,0));
QCOMPARE(Instruction(0x4000002), Instruction(1, 2));
// QCOMPARE(Instruction(0x4000002), Instruction(1, 2, 3, 4));
// TODO other combinations
}
// Test that we are correctly decoding instruction fields
void MachineTests::instruction_access() {
Instruction i(0xffffffff);
QCOMPARE(i.data(), (std::uint32_t) 0xffffffff);
QCOMPARE(i.opcode(), (std::uint8_t) 0x3f);
QCOMPARE(i.rs(), (std::uint8_t) 0x1f);
QCOMPARE(i.rt(), (std::uint8_t) 0x1f);
QCOMPARE(i.rd(), (std::uint8_t) 0x1f);
QCOMPARE(i.shamt(), (std::uint8_t) 0x1f);
QCOMPARE(i.funct(), (std::uint8_t) 0x3f);
QCOMPARE(i.immediate(), (std::uint16_t) 0xffff);
QCOMPARE(i.address(), (std::uint32_t) 0x3ffffff);
}
|