08.11.2014 Views

RealView Compilation Tools アセンブラガイド - ARM Information Center

RealView Compilation Tools アセンブラガイド - ARM Information Center

RealView Compilation Tools アセンブラガイド - ARM Information Center

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>ARM</strong> 命 令 と Thumb 命 令<br />

32 ビット Thumb-2 命 令 の reglist に 関 する 制 約 条 件<br />

32 ビッ ト Thumb-2 命 令 では、 以 下 の 制 約 条 件 が 適 用 さ れます。<br />

• SP をリストに 含 めることはできません。<br />

• STM 命 令 では、 プ ロ グ ラ ム カ ウ ン タ を リ ス ト に 含 め る こ と はで き ません。<br />

• LDM 命 令 では、 プ ロ グ ラ ム カ ウ ン タ と lr を 両 方 と も リ ス ト に 含 める こ と<br />

はでき ません。<br />

• リ ス ト には 複 数 のレジス タ を 指 定 する 必 要 があ り ます。<br />

reglist にレジスタが 1 つしか 指 定 されていない STM または LDM 命 令 を 書 いた 場<br />

合 は、 自 動 的 に 同 等 の STR または LDR 命 令 に 書 き 換 え ら れます。 逆 アセンブル<br />

リ ス ト と ソ ース コー ド を 比 較 する 場 合 は、 こ の 点 に 注 意 し て 下 さ い。<br />

アセンブラの --diag_warning 1645 コマンド ラインオプショ ンを 使 用 して、 命 令<br />

置 換 が 発 生 し たか 確 認 で き ます。<br />

16 ビット 命 令<br />

Thumb-2 コード、 および Thumb-2 以 前 のプ ロ セ ッ サ 上 の Thumb コードでは、<br />

これらの 命 令 のサブセッ トの 16 ビッ トバージョンを 使 用 できます。<br />

16 ビ ッ ト 命 令 には、 以 下 の 制 約 条 件 が 適 用 されます。<br />

• reglist に 指 定 する レ ジ ス タはすべて Lo レジスタである 必 要 があり ま<br />

す。<br />

• Rn は Lo レジスタである 必 要 があり ます。<br />

• addr_mode は 省 略 する (ま たは IA を 指 定 する) 必 要 があ り ます。 つま り 、<br />

転 送 単 位 でア ド レ ス をポ ス ト イ ン ク リ メ ン ト する 必 要 があ り ます。<br />

• STM 命 令 に 対 し て ラ イ ト バ ッ ク を 指 定 する 必 要 があ り ます。<br />

• Rn が reglist にない 場 合 、 LDM 命 令 に 対 し て ラ イ ト バ ッ ク を 指 定 する 必 要<br />

があ り ます。<br />

また、PUSH および POP 命 令 を こ の 形 式 で 記 述 で き ます。 PUSH と POP の 一 部 の 形<br />

式 は、 16 ビット 命 令 でもあります。 詳 細 については、 「PUSH および POP」<br />

(ページ 4-33) を 参 照 して 下 さい。<br />

注<br />

これらの 16 ビッ ト 命 令 は、 Thumb-2EE では 使 用 でき ません。<br />

<strong>ARM</strong> DUI 0204IJ Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. 4-31<br />

Non-Confidential

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!