
7 DETAILS OF INSTRUCTIONS
7-6
EPSON
S1C17 FAMILY S1C17 CORE MANUAL
add.a
%rd, %rs
add.a/c
%rd, %rs
add.a/nc %rd, %rs
Function
24-bit addition
Standard)
rd
(23:0)
← rd(23:0) + rs(23:0)
Extension 1) rd(23:0)
← rs(23:0) + imm13(zero extended)
Extension 2) rd(23:0)
← rs(23:0) + imm24
Code
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
0 0 1 1 0 0
r d
1 0 0 0
r s
add.a
|
0 0 1 1 0 0
r d
0 0 0 0
r s
add.a/c
|
0 0 1 1 0 0
r d
0 1 0 0
r s
add.a/nc
|
Flag
IL IE
C
V
Z
N
– – – – – –
|
Mode
Src:Register direct %rs = %r0 to %r7
Dst:Register direct %rd = %r0 to %r7
CLK
One cycle
Description (1) Standard
add.a
%rd,%rs
; rd
← rd + rs
The content of the rs register is added to the rd register.
(2) Extension 1
ext
imm13
add.a
%rd,%rs
; rd
← rs + imm13
The 13-bit immediate imm13 is added to the content of the rs register after being zero-extended,
and the result is loaded into the rd register. The content of the rs register is not altered.
(3) Extension 2
ext
imm13
; imm13(10:0) = imm24(23:13)
ext
imm13
; = imm24(12:0)
add.a
%rd,%rs
; rd
← rs + imm24
The 24-bit immediate imm24 is added to the content of the rs register, and the result is loaded
into the rd register. The content of the rs register is not altered.
(4) Conditional execution
The /c or /nc suffix on the opcode specifies conditional execution.
add.a/c
Executed as add.a when the C flag is 1 or executed as nop when the flag is 0
add.a/nc Executed as add.a when the C flag is 0 or executed as nop when the flag is 1
In this case, the ext instruction can be used to extend the operand.
(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.
Example
(1) add.a
%r0,%r0
; r0 = r0 + r0
(2) ext
0x7ff
ext
0x1fff
add.a
%r1,%r2
; r1 = r2 + 0xffffff