QDSUB[condition] dest, op1, op2
其中:
condition |
16 個條件之一。 |
dest |
目標暫存器 |
op1 |
包含第一個運算元的暫存器 |
op2 |
包含第二個運算元的暫存器 |
QDSUB 指令將 op2 加倍,然後從 op2 減去 op1,並將結果儲存到 dest。中間結果經飽和處理,成為 32 位有符號整數,範圍是 -231 ≤ x ≤ 231 - 1。任一結果發生飽和時,Q 標誌置位。condition 必須是有效值;否則將指令當作 NOP。
N |
Z |
C |
V |
Q |
S |
I |
F |
T |
T |
T |
T |
T |
M |
|
|
|
|
31 |
|
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
|
16 |
15 |
|
12 |
11 |
|
8 |
7 |
6 |
5 |
4 |
3 |
|
0 |
condition |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
op2 |
dest |
SBZ |
0 |
1 |
0 |
1 |
op1 |
1 ;@.text
2
3 ;@.globl funcqdsub
4
5 ;@.align 0
6
7 ;@ * * * QDSUB * * *
8
9
10 AREA example, CODE, READONLY
11
12 00000000 E3A01019 MOV R1, #25
13 00000004 E3A02032 MOV R2, #50
14 00000008 E1623051 QDSUB R3, R1, R2
15
16 @ Set Q flag
17 00000012 E3A04000 MOV R4, #0xFFFFFFFF
18 00000016 E3A05001 MOV R5, #1
19 00000020 E1656054 QDSUB R6, R4, R5
20 END