Safe Haskell | None |
---|---|
Language | Haskell2010 |
LibRISCV.Effects.Operations.Language
Description
Implements an effect for interactions with the architectural state, upon which instructions are executed (register file, memory, program counter, etc.).
Synopsis
- data Size
- bitSize :: Size -> Int
- data Operations v r where
- ReadRegister :: forall v. v -> Operations v v
- WriteRegister :: forall v. v -> v -> Operations v ()
- Load :: forall v. Size -> v -> Operations v v
- Store :: forall v. Size -> v -> v -> Operations v ()
- WritePC :: forall v. v -> Operations v ()
- ReadPC :: forall v. Operations v v
- Exception :: forall v. v -> String -> Operations v ()
- Ecall :: forall v. v -> Operations v ()
- Ebreak :: forall v. v -> Operations v ()
- readRegister :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> Eff effs v
- writeRegister :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> v -> Eff effs ()
- load :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => Size -> v -> Eff effs v
- store :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => Size -> v -> v -> Eff effs ()
- writePC :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> Eff effs ()
- readPC :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => Eff effs v
- exception :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> String -> Eff effs ()
- ecall :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> Eff effs ()
- ebreak :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> Eff effs ()
Documentation
Abstraction for expressing a 8-, 16-, or 32-bit size.
Instances
data Operations v r where Source #
Constructors
ReadRegister :: forall v. v -> Operations v v | |
WriteRegister :: forall v. v -> v -> Operations v () | |
Load :: forall v. Size -> v -> Operations v v | |
Store :: forall v. Size -> v -> v -> Operations v () | |
WritePC :: forall v. v -> Operations v () | |
ReadPC :: forall v. Operations v v | |
Exception :: forall v. v -> String -> Operations v () | |
Ecall :: forall v. v -> Operations v () | |
Ebreak :: forall v. v -> Operations v () |
readRegister :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> Eff effs v Source #
writeRegister :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> v -> Eff effs () Source #
load :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => Size -> v -> Eff effs v Source #
store :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => Size -> v -> v -> Eff effs () Source #
writePC :: forall v (effs :: [Type -> Type]). Member (Operations v) effs => v -> Eff effs () Source #