7 DETAILS OF INSTRUCTIONS
7-62
EPSON
S1C17 FAMILY S1C17 CORE MANUAL
(2) Extension 1
ext
imm13
ld.a
%rd,[%rb]
; memory address = rb + imm13
The ext instruction changes the addressing mode to register indirect addressing with
displacement. As a result, the content of the rb register with the 13-bit immediate imm13 added
comprises the memory address, the 32-bit data (the eight high-order bits are ignored) in which
is transferred to the rd register. The content of the rb register is not altered.
(3) Extension 2
ext
imm13
; = imm24(23:13)
ext
imm13
; = imm24(12:0)
ld.a
%rd,[%rb]
; memory address = rb + imm24
The addressing mode changes to register indirect addressing with displacement, so the content
of the rb register with the 24-bit immediate imm24 added comprises the memory address, the
32-bit data (the eight high-order bits are ignored) in which is transferred to the rd register. The
content of the rb register is not altered.
(4) Address increment/decrement option
Specifying the []+, []-, or -[] option will automatically increment/decrement the memory
address. This allows the program to simply perform continuous data transfer.
ld.a
%rd,[%rb]+
Load instruction with post-increment option
The memory address will be incremented after the data transfer has
finished.
ld.a
%rd,[%rb]-
Load instruction with post-decrement option
The memory address will be decremented after the data transfer has
finished.
ld.a
%rd,-[%rb]
Load instruction with pre-decrement option
The memory address will be decremented before starting the data
transfer.
The address increment/decrement sizes are listed below.
When no ext is used (as in (1) shown above):
4 (32-bit size)
When one ext is used (as in (2) shown above): imm13
When two ext are used (as in (3) shown above): imm24
(5) Delayed slot instruction
This instruction may be executed as a delayed slot instruction by writing it directly after
a branch instruction with the “d” bit. In this case, extension of the immediate by the ext
instruction cannot be performed.
Caution
The rb register and the displacement must specify a 32-bit boundary address (two least significant
bits = 0). Specifying other address causes an address misaligned interrupt. Note, however, that the
data transfer is performed by setting the two least significant bits of the address to 0.