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 범위에 있어야 합니다.

Rd, Rn 또는 Rm에 r15를 사용하면 안 됩니다.

조건 플래그

이러한 명령어는 플래그를 변경하지 않습니다.

아키텍처

이러한 ARM 명령어는 ARMv6 이상에서 사용할 수 있습니다.

이러한 32비트 Thumb 명령어는 ARMv7-M 프로필을 제외하고 ARMv6T2 이상에서 사용할 수 있습니다.

이러한 명령어의 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 0204IK
Non-Confidential