aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/alu.h
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-04 18:13:58 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-04 18:13:58 +0100
commit40580e24e7a7b2e774d001878dc493216e75b936 (patch)
treed5fd0e60a09c35111fabe9d8975a8cb2a087b431 /qtmips_machine/alu.h
parent36492497ba7096fb20c417941d426e01870d213d (diff)
downloadqtmips-40580e24e7a7b2e774d001878dc493216e75b936.tar.gz
qtmips-40580e24e7a7b2e774d001878dc493216e75b936.tar.bz2
qtmips-40580e24e7a7b2e774d001878dc493216e75b936.zip
Unified instructions table and access type move to machinedefs.h .
This allows to specify requirement for RS and RD on instruction basis even for T_R / ALU instructions. Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/alu.h')
-rw-r--r--qtmips_machine/alu.h37
1 files changed, 2 insertions, 35 deletions
diff --git a/qtmips_machine/alu.h b/qtmips_machine/alu.h
index bc12666..efadbe0 100644
--- a/qtmips_machine/alu.h
+++ b/qtmips_machine/alu.h
@@ -41,42 +41,9 @@
#include <QObject>
#include <registers.h>
-namespace machine {
+#include "machinedefs.h"
-enum AluOp : std::uint8_t {
- ALU_OP_SLL = 0,
- ALU_OP_SRL = 2,
- ALU_OP_SRA,
- ALU_OP_SLLV,
- ALU_OP_SRLV = 6,
- ALU_OP_SRAV,
- ALU_OP_JR,
- ALU_OP_JALR,
- ALU_OP_MOVZ,
- ALU_OP_MOVN,
- ALU_OP_BREAK = 13,
- ALU_OP_MFHI = 16,
- ALU_OP_MTHI,
- ALU_OP_MFLO,
- ALU_OP_MTLO,
- ALU_OP_MULT = 24,
- ALU_OP_MULTU = 25,
- ALU_OP_DIV = 26,
- ALU_OP_DIVU = 27,
- ALU_OP_ADD = 32,
- ALU_OP_ADDU,
- ALU_OP_SUB,
- ALU_OP_SUBU,
- ALU_OP_AND,
- ALU_OP_OR,
- ALU_OP_XOR,
- ALU_OP_NOR,
- ALU_OP_SLT = 42,
- ALU_OP_SLTU,
- ALU_OP_LUI = 64, // We don't care about exact index for this one
- ALU_OP_PASS_S, // Pass s argument without change for JAL
- ALU_OP_LAST // First impossible operation (just to be sure that we don't overflow)
-};
+namespace machine {
// Do ALU operation.
// operation: This is function field from instruction or shifted opcode for immediate instructions