ACDS バージョン 13.1 では、Nios® II GNU ツールチェーンが GCC 4.1.2 から GCC 4.7.3 にアップグレードされています。新しいツールチェーンにアップグレードするユーザーは、以下の変更に注意する必要があります。
具体的な変更をNios II:
- -mcus__buildin_custom_-*または#pragmaの代わりに__buildin_custom_* を使用して、コンパイラーの最適化レベルとコマンドラインフラグに関係なく、Nios II浮動小数点カスタム命令 (FPCI) を確実に生成します。
- Nios II浮動小数点カスタム命令 (FPCI)に-mcus同値または#pragmaを使用するには:
- fminsおよびfmax FPCI を生成するには、-ffiシセアンス演算専用フラグを使用する必要があります。
- 最適化 (-O0 フラグ以外) を使用して fsqrts FPCI を生成する必要があります。
- ハードウェアにインストランセンタル関数を実装するユーザーは、-funsafe-math-optimizationsフラグを使用して、金融関数 fsins() 、fcoss() 、ftans() 、fatans() 、fexps() 、fexps() 、5ghz() および対応する倍精度関数の FPCI を生成する必要があります。
- プラグマの形式が例から変更されました。#pragma custom_fadds 253 ~ #pragma GCC ターゲット (「custom-numads=253」) と function 属性は、代替形式 の__attribute__ ((「custom-warrantds=253」))を提供します。
- エンデアン設定には-EL/-EBの代わりに-mel/-mebフラグを使用します。この設定を有効にするには、Eclipse (SBTE) ユーザー向けソフトウェア・ビルド・ツールを再生成する必要があります。
- -mreverse-bitfieldsフラグとreverse_bitfieldsプラグマはサポートされなくなりました。
- スタックチェックを有効にするには、-mstack-checkの代わりに-fstack-checkフラグを使用する必要があります。
GCC の変更と強化:
- nios2-elf-gcc GCC 4.7.3 の -Gcc,-relax-allフラグは、256MB の制限を超えるファンクションコールとプログラムをサポートします。
- 最適化に使用する場合、asm演算子を使用するインライン・アセンブリー・コードは、http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm に記載されているメカニズムを使用して、C からインポートされた値を取り出して C にエクスポートする必要があります。
- 標準 C ヘッダーは GCC 4.7.3 ではサポートされていません。プリスタンダード C を標準 C に置き換えます (例: 標準 C)。#include 、cout、endlと#include 、std::coutおよびstd::endl。
- コンパイルフラグ-Wl,--defsym は、バーが未定義のシンボルである場合、GCC 4.7.3 のスチーミングレベルでエラーを生成します。GCC 4.1.2 はこのチェックを含まない。
GNU は、以下の一般的な問題を文書化するための GCC4.7 移植ガイドも提供 しています: http://gcc.gnu.org/gcc-4.7/porting_to.html
GCC リリースノートの全文は http://gcc.gnu.org/releases.htmlで入手できます。