ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
ARMv7から導入された、ソフトウェアからハードウェアの能力を判断するための手法。
Intel x86のcpuidとは異なり、専用命令が用意されているわけではない。
ARMの命令セットにあるコプロセッサーとのインターフェイスを利用し、コプロセッサーのレジスターを読み書きする命令を用いてレジスターを読み取り、情報が得られるようになっている。
ARMでは、CP15に様々な情報レジスターが割り付けられており、CRn→opc1→CRm→opc2で階層構造が取られている。このうち、CR0とopc1は0で、CRmがc1〜c7の範囲がCPUIDレジスターとされている。
CPUIDの扱いではないが、同じ階層で、CRmがc0、opt2が0には、Main IDレジスターがあり、このレジスターを読むとCPUの種類が判断できる。
次の命令を用いて汎用レジスターに読み取る。
MRC<c> <coproc>,<opc1>,<Rt>,<CRn>,<CRm>{,<opc2>}
MRC2<c> <coproc>,<opc1>,<Rt>,<CRn>,<CRm>{,<opc2>}
例えば、ID_PFR0をR0に読み取るには、次のようにする。
mrc p15, 0, r0, c0, c1, 0
現在定義されているレジスターは、次の通りである。
CRn | opc1 | CRm | opc2 | レジスター | |
---|---|---|---|---|---|
c0 | 0 | c1 | 0 | ID_PFR0 | Processor Feature Register 0 |
1 | ID_PFR1 | Processor Feature Register 1 | |||
2 | ID_DFR0 | Debug Feature Register 0 | |||
3 | ID_AFR0 | Auxiliary Feature Register 0 | |||
4 | ID_MMFR0 | Memory Model Feature Register 0 | |||
5 | ID_MMFR1 | Memory Model Feature Register 1 | |||
6 | ID_MMFR2 | Memory Model Feature Register 2 | |||
7 | ID_MMFR3 | Memory Model Feature Register 3 | |||
c2 | 0 | ID_ISAR0 | ISA Feature Register 0 | ||
1 | ID_ISAR1 | ISA Feature Register 1 | |||
2 | ID_ISAR2 | ISA Feature Register 2 | |||
3 | ID_ISAR3 | ISA Feature Register 3 | |||
4 | ID_ISAR4 | ISA Feature Register 4 | |||
5 | ID_ISAR5 | ISA Feature Register 5 | |||
6 | 予約 | ||||
7 |
コメントなどを投稿するフォームは、日本語対応時のみ表示されます