4.3.10. SEL

根据 APSR GE 标记的状态,从每个操作数中选择字节。

语法

SEL{cond} {Rd}, Rn, Rm

其中:

cond

是一个可选的条件代码(请参阅条件执行)。

Rd

是目标寄存器。

Rn

是存放第一个操作数的寄存器。

Rm

是存放第二个操作数的寄存器。

操作

SEL 指令根据 APSR GE 标记从 RnRm 中选择字节:

  • 如果设置了 GE[0],则选取 Rn[7:0],并存入 Rd[7:0],否则选取 Rm[7:0]

  • 如果设置了 GE[1],则选取 Rn[15:8],并存入 Rd[15:8],否则选取 Rm[15:8]

  • 如果设置了 GE[2],则选取 Rn[23:16],并存入 Rd[23:16],否则选取 Rm[23:16]

  • 如果设置了 GE[3],则选取 Rn[31:24],并存入 Rd[31:24],否则选取 Rm[31:24]

用法

不要将 r15 用作 RdRnRm

您可在有符号并行指令之后使用 SEL 指令,请参阅并行加法和减法。 您可利用此指令来选择多个字节或半字数据中的最大或最小值。

条件标记

此指令不更改标记。

体系结构

此 ARM 指令可用于 ARMv6 及更高版本。

这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本(ARMv7-M 架构除外)。

此指令无 16 位 Thumb 版本。

示例

    SEL     r0, r4, r5
    SELLT   r4, r0, r4

下面的指令序列将 r4 中的每个字节都设置为了与 r1r2 中的相应字节相等。

    USUB8    r4, r1, r2
    SEL      r4, r2, r1
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential