
7 DETAILS OF INSTRUCTIONS
86
EPSON
S1C33 FAMILY C33 PE CORE MANUAL
jrle sign8 / jrle.d sign8
Function
Conditional PC relative jump (for judgment of signed operation results)
Standard) pc
← pc + sign8 × 2 if Z | (N^V) is true
Extension 1) pc
← pc + sign22 if Z | (N^V) is true
Extension 2) pc
← pc + sign32 if Z | (N^V) is true
Code
15 12 11 8 7 0
0 0 0 0 1 1 1 d
sign8
0x0E__, 0x0F__
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jrle sign8 when d bit (bit 8) = 0
jrle.d sign8 when d bit (bit 8) = 1
Flag
IE C V Z N
– – – – –
|
|
|
|
Mode
Signed PC relative
CLK
jrle Two cycles (when not branched), Three cycles (when branched)
jrle.d Two cycles
Description
(1) Standard
jrle
sign8 ; = "jrle sign9", sign8 = sign9(8:1), sign9(0)=0
If the condition below has been met, this instruction doubles the signed 8-bit immediate
sign8
and adds it to the PC for branching the program flow to the address. It does not branch if the
condition has not been met.
• Z flag = 1 or N flag
≠ V flag (e.g. “A ≤ B” has resulted by cmp A,B)
The
sign8 specifies a halfword address in 16-bit units.
The
sign8 (×2) allows branches within the range of PC - 0x100 to PC + 0xFE.
(2) Extension 1
ext
imm13 ; = sign22(21:9)
jrle
sign8 ; = "jrle sign22", sign8 = sign22(8:1), sign22(0)=0
The ext instruction extends the displacement to be added to the PC into signed 22 bits using its
13-bit immediate data
imm13. The sign22 allows branches within the range of PC - 0x200000
to PC + 0x1FFFFE.
(3) Extension 2
ext
imm13 ; imm13(12:3)= sign32(31:22)
ext
imm13 ; = sign32(21:9)
jrle
sign8 ; = "jrle sign32", sign8 = sign32(8:1), sign32(0)=0
The
ext instructions extend the displacement to be added to the PC into signed 32 bits using
their 13-bit immediates (
imm13 × 2). The displacement covers the entire address space. Note
that the low-order 3 bits of the first
imm13 are ignored.
(4) Delayed branch (d bit = 1)
jrle.d sign8
For the jrle.d instruction, the next instruction becomes a delayed instruction. A delayed
instruction is executed before the program branches. Exceptions are masked in intervals
between the jrle.d instruction and the next instruction, so no interrupts or exceptions occur.
Example
cmp %r0,%r1 ; r0 and r1 contain signed data.
jrle 0x2 ; Skips the next instruction if r0
≤ r1.
Caution
When the jrle.d instruction (delayed branch) is used, be careful to ensure that the next
instruction is limited to those that can be used as a delayed instruction. If any other instruction
is executed, the program may operate indeterminately. For the usable instructions, refer to the
instruction list in the Appendix.
Kommentare zu diesen Handbüchern