L8UI — Load 8-bit Unsigned

Instruction Word

Slot
Inst
6
3
6
2
6
1
6
0
5
9
5
8
5
7
5
6
5
5
5
4
5
3
5
2
5
1
5
0
4
9
4
8
4
7
4
6
4
5
4
4
4
3
4
2
4
1
4
0
3
9
3
8
3
7
3
6
3
5
3
4
3
3
3
2
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0
9876543210
Format x24 - 24 bit(s) 0
L8UI 0000 0010
t 3210
s 3210
imm8 76543210

Assembler Syntax

L8UI at, as, 0..255

C Syntax

#include <xtensa/tie/xt_core.h>

extern unsigned char XT_L8UI(const unsigned char * p, immediate i);

Description

(please consult the Xtensa ® Instruction Set Architecture Reference Manual for any cross references and additional information)

L8UI is an 8-bit unsigned load from memory. It forms a virtual address by adding the contents of address register as and an 8-bit zero-extended constant value encoded in the instruction word. Therefore, the offset ranges from 0 to 255. Eight bits (one byte) are read from the physical address. This data is then zero-extended and written to address register at.

If the Region Translation Option or the MMU Option is enabled, the virtual address is translated to the physical address. If not, the physical address is identical to the virtual address. If the translation or memory reference encounters an error (for example, protection violation or non-existent memory), the processor raises one of several exceptions .

Operation

vAddr ← AR[s] + (024||imm8)
(mem8, error) ← Load8(vAddr)
if error then
	EXCVADDR ← vAddr
	Exception (LoadStoreErrorCause)
else
	AR[t] ← 024||mem8
endif

Exceptions

Memory Group (see Memory Group:)GenExcep(LoadProhibitedCause) if Region Protection Option or MMU OptionDebugExcep(DBREAK) if Debug Option

Protos that use L8UI

proto L8UI { out uint8 r, in const uint8 * p, in immediate i }{}{
L8UI r, p, i + 0;
}