![Intel NIOS II Owner Reference Manual Download Page 208](http://html1.mh-extra.com/html/intel/nios-ii/nios-ii_owner-reference-manual_2071826208.webp)
8.5.56. ldh / ldhio
Instruction
load halfword from memory or I/O peripheral
Operation
rB ← σ(Mem16[rA + σ(IMM16)])
Assembler Syntax
ldh rB, byte_offset(rA)
ldhio rB, byte_offset(rA)
Example
ldh r6, 100(r5)
Description
Computes the effective byte address specified by the sum of
rA and the instruction's signed 16-bit immediate value.
Loads register rB with the memory halfword located at the
effective byte address, sign extending the 16-bit value to 32
bits. The effective byte address must be halfword aligned. If
the byte address is not a multiple of 2, the operation is
undefined.
Usage
In processors with a data cache, this instruction may
retrieve the desired data from the cache instead of from
memory. Use the
ldhio
instruction for peripheral I/O. In
processors with a data cache,
ldhio
bypasses the cache
and is guaranteed to generate an Avalon-MM data transfer.
In processors without a data cache,
ldhio
acts like
ldh
.
For more information on data cache, refer to the Cache and
Tightly Coupled Memory chapter of the Nios II Software
Developer’s Handbook.
Exceptions
Supervisor-only data address
Misaligned data address
TLB permission violation (read)
Fast TLB miss (data)
Double TLB miss (data)
MPU region violation (data)
Instruction Type
I
Instruction Fields
A
= Register index of operand rA
B
= Register index of operand rB
IMM16
= 16-bit signed immediate value
Table 102.
ldh
Bit Fields
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
A
B
IMM16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
IMM16
0x0f
Table 103.
ldhio
Bit Fields
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
A
B
IMM16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
IMM16
0x2f
8. Instruction Set Reference
NII-PRG | 2018.04.18
Nios II Processor Reference Guide
208