1.4.4. 例 1 - 符号拡張とゼロ拡張

この例では、ARMv6 と ARMv6 より前のアーキテクチャ用にコンパイルを実行したときに異なる命令が生成されることを示します。

signed char unpack(int i)
{
    return (signed char)i;
}

ARMv6 より前のアーキテクチャのコンパイル

--cpu 5 を使用してコンパイルすると、以下のようなコードが生成されます。

unpack PROC
       LSL      r0,r0,#24
       ASR      r0,r0,#24
       BX       lr
       ENDP

ARMv6 アーキテクチャのコンパイル

--cpu 6 を使用してコンパイルすると、以下のようなコードが生成されます。

unpack PROC
       SXTB    r0,r0
       BX       lr
       ENDP

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential