重要な情報
- なし。
新機能
- なし。
既知の問題
プリプロセッサシンボルがELF/DWARF出力に含まれていません。
C形式のプリプロセッサマクロと、アセンブラ形式のマクロは、混在させるべきではありません。C形式のマクロをラベルフィールドの識別子の連結に使用する場合、そのラベルは再配置可能なセグメントにあっても絶対となります。識別子を連結する際は、シンボル引数名ではなく、序数のマクロ引数
\1-\9
および\A-\Z
を使用してください。たとえば、以下は正しく機能します。mymac MACRO first,second \1_\2: NOP ENDM mymac a,b
また、次のように拡張します。a_b:NOP
DS16
は2バイトのアラインメントを強制するはずですが、強制していません。DS32
は4バイトのアラインメントを強制するところを、そうしていません。
一時的な解決方法は、ALIGNRAM 1
をDS16
の前に、ALIGNRAM 2
をDS32
の前に挿入することです。-
アセンブラディレクティブは、ITブロック (IT命令の後の条件付き命令)内に表示されないことがあります。この制限はC形式のプリプロセッサディレクティブには適用されません。これらは、いずれかのアセンブラ命令が解析される前に処理されます。アセンブラディレクティブがITブロック内に見つかった場合、そのブロックは終了すると見なされ、アセンブラはエラー
#429: IT-block contains too few instructions
を報告します。対策としては、可能であれば対応するC形式のプリプロセッサディレクティブを代わりに使用することが挙げられます(たとえば、IF
ではなく#if
を使用するなど)。
[EW20356] -
C形式のプリプロセッサがマクロ拡張を実行するとき、基本のニーモニックに一致するすべての識別子も条件付きの派生形と同じになります。たとえば、
#define B 42
は、BNE
やBGE
なども42として効率的に定義します。
[EW21470]
プログラム修正
-
LDRD
(リテラル)の再配置によって、参照が後方の場合にリンクが失敗します。この問題に対処するために、アセンブラが前方の参照であると判断できない場合は未解決のリテラルは使用できなくなりました。
[EW22726]
ユーザガイドの訂正
-
ARM® IARアセンブラリファレンスガイド(AARM-8)、訂正:
-
40ページ:
SFE(MYCODE)-SFB(MYCODE)
をSIZEOF(MYCODE)
に訂正
-
83ページ、86ページ、94ページ:現在アセンブラで使用されていないディレクティブ
CFI VIRTUALRESOURCE
を削除。
-
40ページ:
その他
- なし。
リリース履歴
V6.21 2011-07-05
プログラム修正-
アセンブラで、UAL前の構文(たとえば
MOV<c>S
など)がBICS
、ORRS
、ANDS
でも受け入れられるようになりました。
[EW22459] -
EWARM 6.21.4:
SMLAWB
、SMLAWT
、SMULBB
、SMULBT
、SMULTB
、SMULTT
の各命令は、Cortex-M4のメディア拡張を必要とするため、Cortex-M3用にアセンブルする際に使用できなくなりました。
[EW22553]
- なし。
V6.20 2011-04-29
プログラム修正-
アセンブラで、C/C++コメントが区切りなしに後に続く場合でも、キーワード
ELSE
、ELSIF
、ENDIF
を解析できるようになりました。
[EW22296] -
EWARM 6.20.2:
アセンブラが、フォームLSR{S}
の命令に対して「式が範囲外」と報告した後で、インターナルエラーを出力しなくなりました。, ,#0"
[EW22406]
- なし。
V6.10 2010-11-04
プログラム修正-
EQUatedシンボルを使用しても、インターナルエラーが出力されなくなりました。
[EW21616] -
アセンブラが、前のエラーのあとにELFを続けて生成できない場合に、エラーを出力するようになりました。
[EW21760] -
ARMv6-Mのアセンブラがビットごとの即時論理命令のThumb-2派生型(
ORR
、AND
、BIC
、EOR
) または比較(CMP
、CMN
、TST
、TEQ
)を受け入れなくなりました。
[EW21980]
- なし。
V5.50 2010-04-21
プログラム修正-
最初のオペランドに明示的な
SP
を持つSRS
命令構文が認識されるようになりました。
[EW21571] -
Thumb-2命令
CMN
、CMP
、TEQ
、TST
のイミディエイト派生形は、Thumb-2以外のアーキテクチャで受け入れられなくなりました。
[EW21644] -
ARM1136は、ARMv6Kと見なされます。これは、コアレビジョンr1p0およびそれ以降については有効です。
[EW21653]
- なし。
V5.41 2009-12-14
-
EWARM 5.41.2:
目的地のレジスタにSP
を持つLDR
が、予期しない命令として報告されなくなりました。
[EW21576]
V5.40 2009-07-10
-
MOVT
命令は、イミディエイト値の下のハーフワードを目的のレジスタの上のハーフワードに移すように修正されました。これまでは、イミディエイト値の上のハーフワードが使用されていました。
[EW20852] -
アセンブラは、
SP
またはPC
がThumbモードのSTM
命令のレジスタリストにある場合に、ワーニングのunpredictable register combination
ではなく、illegal register
エラーを報告するようになりました。SP
およびLDM
命令についても同様です。
[EW20854] -
EWARM 5.40.4:
明示的なThumbディレクティブが使用されていない場合、Cortex-Mの暗黙的THUMBモードでラベルが奇数としてマークされるようになりました。
[EW20359、EW21173] -
EWARM 5.40.4:
Thumbモードでの条件付きBLX
のアセンブリで、インターナルエラーが発生しなくなりました。
[EW21182] -
EWARM 5.40.4:
Cortex-M0でアセンブルする際に、SVC
命令が使用できるようになりました。
[EW21213] -
EWARM 5.40.4:
CODE16モードで、条件の付かない分岐が8ビットのオフセットを持つBEQ
となる可能性がありました。これにはAL
(恒久的な条件)のエンコーディングがありません。条件のない分岐に、正しい11ビットのオフセットエンコーディングが使用されるようになりました。
[EW21257]
V5.30 2009-01-23
-
Thumb2 ISAの分岐長さのコーナーケース処理が改善されました。より小さい分岐を選択しようとする場合に、縮小された命令サイズが考慮されるようになりました。分岐とそのターゲットラベルの間の命令が小さくなっている場合、コーナーケースで狭い分岐を使用できるときに幅の広い分岐が生成されることがあります。
[EW20357] -
間違ったワーニングが出力されなくなりました。
[EW20358] -
SMC
命令が、arm1176(f)jzコアで使用可能になりました。
[EW20388] -
アセンブラで、マクロ定義内のマルチバイトによるコメントを解析できるようになりました。
[EW20510]
V5.20 2008-06-24
-
無効な命令でインターナルエラーが生成される場合がありました。
[EW19411, EW19733] -
アセンブラで、同じ名前を使用するセグメント定義に続くローカルのラベル定義を処理できるようになりました。
[EW19474] -
必要とされたシステムレジスタのいくつかが、v6Mモードに追加されました。
[EW19813]
V5.11 2007-12-11
-
アセンブラが、オブジェクトファイル内のデバッグ情報で参照されるすべてのソースファイルへの絶対パスを使用するようになりました。
[EW18901] -
アセンブラが、オプション
-L
、-O
、-I
へのパラメータを、ディレクトリパスとしてのみ解釈するようになりました。以前のプレフィックスの動作は削除されました。
[EW18903] -
VFPコプロセッサを持つCPUコアが選択された場合、
--vfp=none
を使って無効にしようとしてもエラーが生成されなくなりました。
[EW19073] -
アセンブラで、同じ名前を使用するセグメント定義に続くローカルのラベル定義を処理できるようになりました。
[EW19474] -
再配置可能な式でインターナルエラーが生成されなくなりました。
[EW19580] -
特定のPCに関する式について、アセンブラがインターナルエラーを生成しなくなりました。
[EW19676]
V5.10 2007-05-25
-
アセンブラオプション
-j
を指定した場合、Advanced RISC Machines Ltd.のTASMアセンブラで使用される命令構文をアセンブラが認識します。バージョン4.40Aでは、命令ニーモニックのCMPS
、CMNS
、TEQS
、TSTS
が偶然に削除されていましたが、本バージョンで再び導入されました。
[EW18338]