8.4 RVCT v4.0 と ARM コンパイラ v4.1 の間でのアセンブラの変更点

ARM コンパイラツールチェーン v4.1 ではさまざまな変更が armasm に加えられました。

アセンブラについては、以下の点が変更されています。

アセンブラによるファイルの読み出し方法と処理方法の変更点

以前のアセンブラでは、ソースファイルのアセンブルがアセンブラの 2 つのパス間でコードの新しいラインを導入することがありました。以下の例では、シンボル num は第 2 パスで定義されます。その理由は、シンボル foo が :DEF: foo の評価時に第 1 パスで定義されていないためです。

        AREA x,CODE         [ :DEF:foo num     EQU 42         ] foo     DCD num         END

アセンブラによるファイルの読み出し方法と処理方法が変更され、より厳密になりました。このようなコードは、どちらのパスでもファイル内の経路が同じになるように書き直す必要があります。アセンブラの第 2 パスへの新しいラインの導入はエラーと見なされ、その結果以下のエラーが生じます。

エラー:A1903E :最初のパスに行がありません。アセンブルできません

以下のコードに、アセンブラのエラーがどこにあるかを示すの別のサンプルを示します。

       AREA FOO, CODE        IF :DEF:VAR        ELSE VAR    EQU 0        ENDIF        END

このエラーを回避するには、このコードを以下のように記述し直す必要があります。

       AREA FOO, CODE        IF :LNOT::DEF:VAR VAR    EQU 0        ENDIF        END

新しいラインがアセンブラの第 2 パスに見られないので、これは正しく機能します。その代わりに、第 1 パスにあったラインが第 2 パスで無視されます。

アセンブラによって出力されるメッセージの変更点

一般に、ソース行での位置に言及するメッセージでは、以下のように、ソース行内の問題個所を示すキャレット文字が表示されるようになりました。

"foo.s"、行 3(列 19):警告:A1865W:'#' が定数式の前にありません     3 00000000         ADD r0,r1,1                                  ^
診断メッセージの変更点

ARM 命令セットでは、Thumb-2 テクノロジーの導入に伴い、SP (r13) を使用するさまざまな命令が廃止予定になりました。それらの命令は、Thumb-2 テクノロジーをサポートする CPU 用にアセンブルしない限り、廃止予定として診断されなくなりました。以前の CPU に関する警告を有効にするには、オプション --diag_warning=1745,1786,1788,1789,1892 を使用します。この変更は、RVCT v4.0 の 5 (ビルド 697) パッチで導入されました。

廃止されたコマンドラインオプション

-O コマンドラインオプションは廃止されました。代わりに -o を使用して下さい。

関連する参考文書
8.1 RVCT v4.0 と ARM コンパイラ v4.1 の間での全般的な変更点
関連情報
--diag_warning=tag{, tag} アセンブラオプション
-o filename アセンブラオプション
アセンブラの操作方法
第 2 パスアセンブラ診断
非機密扱いPDF file icon PDF 版ARM DUI0530JJ
Copyright © 2010-2013 ARM.All rights reserved.