4.7.4. PKHBT 和 PKHTB

半字组合指令。

组合两个寄存器中的半字。 可在提取半字之前,对其中一个操作数进行移位。

语法

PKHBT{cond} {Rd}, Rn, Rm{, LSL #leftshift}
PKHTB{cond} {Rd}, Rn, Rm{, ASR #rightshift}

其中:

PKHBT

Rn 的位 [15:0] 与移位后的 Rm 值的位 [31:16] 进行组合。

PKHTB

Rn 的位 [31:16] 与移位后的 Rm 值的位 [15:0] 进行组合。

cond

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

Rd

是目标寄存器。

Rn

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

Rm

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

leftshift

在 0 到 31 范围内。

rightshift

在 1 到 32 范围内。

不要将 r15 用作 RdRnRm

条件标记

这些指令不更改标记。

体系结构

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

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

这些指令均无 16 位 Thumb 版本。

示例

    PKHBT   r0, r3, r5          ; combine the bottom halfword of r3 with
                                ; the top halfword of r5
    PKHBT   r0, r3, r5, LSL #16 ; combine the bottom halfword of r3 with
                                ; the bottom halfword of r5
    PKHTB   r0, r3, r5, ASR #16 ; combine the top halfword of r3 with 
                                ; the top halfword of r5

您还可通过使用不同的移位值来调整第二个操作数。

不正确的示例

    PKHBTEQ r4, r5, r1, ASR #8  ; ASR not permitted with PKHBT
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential