aboutsummaryrefslogtreecommitdiff
path: root/src/zc/c_lbu.adoc
blob: 3928373db831f1de7312b08de7d5160e239fc664 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<<<
[#insns-c_lbu,reftext="Load unsigned byte, 16-bit encoding"]
=== c.lbu

Synopsis::
Load unsigned byte, 16-bit encoding

Mnemonic::
c.lbu _rd'_, _uimm_(_rs1'_)

Encoding (RV32, RV64)::
[wavedrom, , svg]
....
{reg:[
    { bits:  2, name: 0x0, attr: ['C0'] },
    { bits:  3, name: 'rd\'' },
    { bits:  2, name: 'uimm[0|1]' },
    { bits:  3, name: 'rs1\'' },
    { bits:  3, name: 0x0 },
    { bits:  3, name: 0x4, attr: ['FUNCT3'] },
],config:{bits:16}}
....

include::c_lbsb_imm_offset.adoc[]

Description::
This instruction loads a byte from the memory address formed by adding _rs1'_ to the zero extended immediate _uimm_. The resulting byte is zero extended to XLEN bits and is written to _rd'_. 

[NOTE]
  _rd'_ and _rs1'_ are from the standard 8-register set x8-x15.

Prerequisites::
None

32-bit equivalent::
<<insns-lbu>>

Operation::
[source,sail]
--
//This is not SAIL, it's pseudo-code. The SAIL hasn't been written yet.

X(rdc) = EXTZ(mem[X(rs1c)+EXTZ(uimm)][7..0]);
--

include::Zcb_footer.adoc[]