projects
/
matthijs
/
master-project
/
cλash.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a24cb7a
)
Store the RegisterBankState in a algbraic data type.
author
Matthijs Kooijman
<m.kooijman@student.utwente.nl>
Fri, 30 Jan 2009 09:11:06 +0000
(10:11 +0100)
committer
Matthijs Kooijman
<m.kooijman@student.utwente.nl>
Fri, 30 Jan 2009 09:11:06 +0000
(10:11 +0100)
Alu.hs
patch
|
blob
|
history
diff --git
a/Alu.hs
b/Alu.hs
index 59e5fd521a9ac856bc489eafbbb4d04cfc2cf2a8..40f76220ade83a2116b6f0bb928e8853cff34863 100644
(file)
--- a/
Alu.hs
+++ b/
Alu.hs
@@
-14,30
+14,32
@@
program = [
(High, High, DontCare) -- r1 = z (0)
]
(High, High, DontCare) -- r1 = z (0)
]
-initial_state = (
(Low, High)
, (), Low, Low)
+initial_state = (
Regs Low High
, (), Low, Low)
-- Register bank
type RegAddr = Bit
-- Register bank
type RegAddr = Bit
-type RegisterBankState = (Bit, Bit)
+--type RegisterBankState = (Bit, Bit)
+data RegisterBankState = Regs { r0, r1 :: Bit} deriving (Show)
+
register_bank ::
(RegAddr, Bit, Bit) -> -- (addr, we, d)
RegisterBankState -> -- s
(RegisterBankState, Bit) -- (s', o)
register_bank (Low, Low, _) s = -- Read r0
register_bank ::
(RegAddr, Bit, Bit) -> -- (addr, we, d)
RegisterBankState -> -- s
(RegisterBankState, Bit) -- (s', o)
register_bank (Low, Low, _) s = -- Read r0
- (s,
fst
s)
+ (s,
r0
s)
register_bank (High, Low, _) s = -- Read r1
register_bank (High, Low, _) s = -- Read r1
- (s,
snd
s)
+ (s,
r1
s)
register_bank (addr, High, d) s = -- Write
(s', DontCare)
where
register_bank (addr, High, d) s = -- Write
(s', DontCare)
where
-
(r0, r1)
= s
+
Regs r0 r1
= s
r0' = if addr == Low then d else r0
r1' = if addr == High then d else r1
r0' = if addr == Low then d else r0
r1' = if addr == High then d else r1
- s' =
(r0', r1')
+ s' =
Regs r0' r1'
-- ALU
-- ALU