Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Sutori.MIPS.MIPS
- data MIPS
- = MLabel String
- | MLoadWord Reg MemAddr
- | MLoadByte Reg MemAddr
- | MLoadImmediate Reg Int
- | MLoadAddress Reg MemAddr
- | MStoreWord Reg MemAddr
- | MStoreByte Reg MemAddr
- | MAdd Reg Reg Reg
- | MSub Reg Reg Reg
- | MMul Reg Reg Reg
- | MRem Reg Reg Reg
- | MDiv Reg Reg Reg
- | MDivS Reg Reg Reg
- | MAnd Reg Reg Reg
- | MOr Reg Reg Reg
- | MEq Reg Reg Reg
- | MNe Reg Reg Reg
- | MGt Reg Reg Reg
- | MGe Reg Reg Reg
- | MLt Reg Reg Reg
- | MLe Reg Reg Reg
- | MNot Reg Reg
- | MNeg Reg Reg
- | MMove Reg Reg
- | MJump String
- | MJumpReg Reg
- | MJumpAndLink String
- | MBeq Reg Reg String
- | MNoop
- | MSyscall
- data MemAddr
- data Reg
- type RegDescriptors = Map Reg (Set TACAddress)
- type VarDescriptors = Map TACAddress (Set Reg)
Documentation
MIPS Available instructions
Constructors
A memory address for memory instructions
MIPS available registers
Constructors
T0 | |
T1 | |
T2 | |
T3 | |
T4 | |
T5 | |
T6 | |
T7 | |
T8 | |
T9 | TX: temporal values (caller-saved) |
S0 | |
S1 | |
S2 | |
S3 | |
S4 | |
S5 | |
S6 | |
S7 | SX: saved values (calle-saved) |
A0 | |
A1 | |
A2 | |
A3 | AX: function arguments (first few, then we stack) |
V0 | |
V1 | VX: function return values |
GP | Global Pointer |
FP | Frame Pointer |
SP | Stack Pointer |
RA | Return Address |
RZ | Always Zero (useful) |
type RegDescriptors = Map Reg (Set TACAddress) Source #
Defines descriptors for registers, so we keep track of which variables live on each register
type VarDescriptors = Map TACAddress (Set Reg) Source #
Defines descriptors for variables, so we keep track of which registers have their current value