5
INSTRUCTION SET
S1C33 FAMILY C33 PE CORE MANUAL
EPSON
39
5
.
14
Branch and Delayed Branch Instructions
5
.
14
.
1
Types of Branch Instructions
(
1
) PC relative jump instructions
PC relative jump instructions include the following:
jr*
sign8
jp
sign8
jpr
%rb
PC relative jump instructions are provided for relocatable programming, so that the program branches to an
address that is the same as the address indicated by the current PC (the address at which the branch instruction
is located) plus a signed displacement specified by the operand.
The number of instruction steps to the jump address is specified for
sign8
or
rb
. However, since the instruction
length in the C
33
PE Core is fixed to
16
bits, the value of
sign8
or
rb
is doubled to become a halfword address
in
16
-bit units. Therefore, the displacement actually added to the PC is a signed
9
-bit quantity derived by
doubling
sign8
(least significant bit always
0
).
The specifiable displacement can be extended by the
ext
instruction, as shown below.
For branch instructions used singly
jp
sign8
Functions as
“
jp
sign9
”
(
sign9
= {
sign8
,
0
})
For branch instructions that are used singly, a signed
8
-bit displacement (
sign8
) can be specified.
S
0
9 8
sign8
0
sign9
S S S S S S S S S S S S S S S S
S
S
S
S
S
S
S
31
1
+
0
0
Current address
PC
Branch destination address
PC
Since
sign8
is a relative value in
16
-bit units, the range of addresses to which jumped is (PC -
256
) to (PC +
254
).
When extended by one
ext
instruction
ext
imm13
jp
sign8
Functions as
“
jp
sign22
”
(
sign22
= {
imm13
,
sign8
,
0
})
The
imm13
specified by the
ext
instruction is extended as the
13
high-order bits of
sign22
.
S
0
21
9 8
imm13
sign8
0
sign22
S S S
S
S
S
S
S
S
S
31
22
1
+
0
0
Current address
PC
Branch destination address
PC
The range of addresses to which jumped is (PC -
2
,
097
,
152
) to (PC +
2
,
097
,
150
).