通信用語の基礎知識 全国のICカードこれひとつ 戻る

A32
辞書:科学用語の基礎知識 半導体用語編 (IYIC)
読み:エイさんじゅうに
外語:A32
品詞:名詞

AArch32(古い呼称でARMステート)で使われている、32ビット環境用の32ビット固定長の命令セット。

目次
概要

従来からある32ビットの命令セットである。

Thumb命令が登場するまでは唯一の命令セットだった。Thumb命令が登場後、呼び分けが必要となり、従来命令を使うモードを「ARMステート」、新たなThumb命令を使うモードを「Thumbステート」と、各々呼ばれるようになった。

更にARMv8が登場し64ビット化されて以降は、AArch32というアーキテクチャに属する2つの命令セットのうちの一つ「A32」と呼ばれるようになった。

特徴
命令

AArch32の命令セット(A32)には、次のような特徴がある。

実行条件付き命令

ARMの提供するマニュアルには、使用例としてユークリッドの互除法の計算が掲載されている。

Cで書いた場合、次のような処理になる。

int gcd(int a, int b)
{
    while (a != b)
    {
        if (a > b)
            a = a - b;
        else
            b = b - a;
    }
    return a;
}

これを、一般的なCPUと同様にARMで記述した場合、次のようになるだろう。

gcd     CMP     r0, r1
        BEQ     end
        BLT     less
        SUB     r0, r0, r1
        B       gcd
less
        SUB     r1, r1, r0
        B       gcd
end

さて、ARMには全ての命令に実行条件を付けることができるため、次のように、僅か4命令で書くことができる。

gcd     CMP     r0, r1
        SUBGT   r0, r0, r1
        SUBLT   r1, r1, r0
        BNE     gcd

様々な条件で、コードサイズが小さくなり、実行速度も速くなる。

ただ、一般的なCコンパイラーでは、ここまで最適化する能力を持たないため、必ずしもここまで効率化できるとは限らない。

オペコード

基本構造
3130292827262524232221201918171615141312111009080706050403020100
condop1 op 

殆どのARM命令はビット31〜28で実行条件をつけることが可能で、ビット27〜25で主要な細分化が行なわれている。

あとからの拡張の影響で、一部につきビット4を主要な細分化に用いているものがある。

condop1op命令クラス
1111
以外
00xxデータ処理とその他の命令
010xワードと符号なしバイトのロード/ストア
0110
0111メディア命令
10xx分岐、リンク付き分岐、ブロックデータ転送
11xxシステムコール、コプロセッサー命令(VFP/Advanced SIMDを含む)
1111xxxx無条件命令

cond≠0b1111

基本的な命令の配列は次の通り。

※付きは、古いARMでは使えない。

 3130292827262524232221201918171615141312111009080706050403020100
データ処理Cond00IOpCodeSRnRdOperand2
PSR転送
乗算Cond000000ASRdRnRs1001Rm
ロング乗算※Cond00001UASRdHiRdLoRs1001Rm
SWPCond00010B00RnRd00001001Rm
分岐と切り替え※Cond000100101111111111110001Rn
ハーフワードレジスター※Cond000PU0WLRnRd01SH1Rm
ハーフワード即値※Cond000PU1WLRnRdOffset11SH1Offset2
LDR、STRCond01IPUBWLRnRdOffset
未定義Cond011 1 
ブロック転送Cond100PUSWLRnRegister List
分岐Cond101Loffset
コプロデータ転送Cond110PUNWLRnCRdcp_numoffset
コプロデータ処理Cond1110CP opcCRnCRdcp_numCP0CRm
コプロレジスター転送Cond1110CP opcLCRnRdcp_numCP1CRm
ソフトウェア割り込みCond1111情報欄

cond=0b1111

元々cond=0b1111は使用されておらず予約扱いだったが、ARMv5以降に無条件実行のみの拡張命令が配置されるようになり、ARMv6で更に命令が追加された。

3130292827262524232221201918171615141312111009080706050403020100
1111op1Rn op 

次のような命令がある。

op1opRn命令
0xxxxxxxx その他の命令、メモリーのヒント、Advanced SIMD命令
100xx1x0x Store Return State(SRS) [ARMv6〜]
100xx0x1x Return From Exception(RFE) [ARMv6〜]
101xxxxxx 分岐命令(BL、BLX)
11000x11
11001xx1
1101xxx1
x
x
x
1111以外コプロセッサーのロード (イミディエイト)
1111コプロセッサーのロード (リテラル)
11000x10
11001xx0
1101xxx0
x
x
x
 コプロセッサーのストア
11000100x 2つのARMコアレジスターからコプロセッサーへのデータ移動 [ARMv6〜]
11000101x コプロセッサーから2つのARMコアレジスターへのデータ移動 [ARMv6〜]
1110xxxx0 コプロセッサーデータ操作
1110xxx01 ARMコアレジスターからコプロセッサーへのデータ移動
1110xxx11 コプロセッサーからARMコアレジスターへのデータ移動
Cond
リンク
用語の所属
ARMアーキテクチャ
AArch32
用語の所属
T32
A64

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic