aboutsummaryrefslogtreecommitdiff
path: root/src/isa
diff options
context:
space:
mode:
authorDavid Li <li.davidm96@gmail.com>2015-12-19 09:27:18 -0500
committerDavid Li <li.davidm96@gmail.com>2015-12-19 09:27:18 -0500
commit8ca42acf1a92ac0d811bbeecf8aed25a8c2d5a30 (patch)
treef824224b73329438bbdd46757294d5991ef2f410 /src/isa
parentfd582a1cbd091576701d12e886d9ad91527320f9 (diff)
Implement RV32I integer-immediate instructions
Diffstat (limited to 'src/isa')
-rw-r--r--src/isa/funct3.rs3
-rw-r--r--src/isa/funct7.rs3
-rw-r--r--src/isa/mod.rs4
3 files changed, 8 insertions, 2 deletions
diff --git a/src/isa/funct3.rs b/src/isa/funct3.rs
index 0612844..be2eafa 100644
--- a/src/isa/funct3.rs
+++ b/src/isa/funct3.rs
@@ -3,8 +3,7 @@ pub const SLLI: u32 = 0x1;
pub const SLTI: u32 = 0x2;
pub const SLTIU: u32 = 0x3;
pub const XORI: u32 = 0x4;
-pub const SRLI: u32 = 0x5;
-pub const SRAI: u32 = 0x5;
+pub const SRLI_SRAI: u32 = 0x5;
pub const ORI: u32 = 0x6;
pub const ANDI: u32 = 0x7;
diff --git a/src/isa/funct7.rs b/src/isa/funct7.rs
index f3446fb..f48fae8 100644
--- a/src/isa/funct7.rs
+++ b/src/isa/funct7.rs
@@ -1,2 +1,5 @@
pub const ADD_SRL: u32 = 0x0;
pub const SUB_SRA: u32 = 0x1;
+
+pub const SRLI: u32 = 0x0;
+pub const SRAI: u32 = 0x1;
diff --git a/src/isa/mod.rs b/src/isa/mod.rs
index ebfd4e8..0e3261b 100644
--- a/src/isa/mod.rs
+++ b/src/isa/mod.rs
@@ -110,6 +110,10 @@ impl Instruction {
(self.word >> 25) & 0x7F
}
+ pub fn shamt(&self) -> u32 {
+ (self.word >> 20) & 0x1F
+ }
+
pub fn rs1(&self) -> Register {
Register::from_num((self.word >> 15) & 0x1F)
}