Skip to main content

MemoryInstructions

Trait MemoryInstructions 

Source
pub trait MemoryInstructions: Sized {
    // Required methods
    fn lb(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64);
    fn lh(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64);
    fn lw(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64);
    fn lbu(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64);
    fn lhu(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64);
    fn ld(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64);
    fn lwu(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64);
    fn sb(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64);
    fn sh(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64);
    fn sw(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64);
    fn sd(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64);
}

Required Methods§

Source

fn lb(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64)

Load a byte from memory into a register.

lb: rd = m8(rs1 + imm)

Source

fn lh(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64)

Load a half word from memory into a register.

lh: rd = m16(rs1 + imm)

Source

fn lw(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64)

Load a word from memory into a register.

lw: rd = m32(rs1 + imm)

Source

fn lbu(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64)

Load a byte from memory into a register, zero extended.

lbu: rd = zx(m8(rs1 + imm))

Source

fn lhu(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64)

Load a half word from memory into a register, zero extended.

lhu: rd = zx(m16(rs1 + imm))

Source

fn ld(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64)

Load a double word from memory into a register.

ldu: rd = m64(rs1 + imm)

Source

fn lwu(&mut self, rd: RiscRegister, rs1: RiscRegister, imm: u64)

Load a word from memory into a register, zero extended.

lwu: rd = zx(m32(rs1 + imm))

Source

fn sb(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64)

Store a byte into memory.

sb: m8(rs1 + imm) = rs2[7:0]

Source

fn sh(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64)

Store a half word into memory.

sh: m16(rs1 + imm) = rs2[15:0]

Source

fn sw(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64)

Store a word into memory.

sw: m32(rs1 + imm) = rs2[31:0]

Source

fn sd(&mut self, rs1: RiscRegister, rs2: RiscRegister, imm: u64)

Store a double word into memory.

sd: m64(rs1 + imm) = rs2[63:0]

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§