===============================================================================
Metrowerks CodeWarrior(TM) Development Studio for NINTENDO DS(TM) 2.0
===============================================================================

2006年3月31日

===============================================================================
       重要な情報が記載されていますので、ツールの使用前にお読みください
===============================================================================

このリリースノートには、ドキュメントに反映されていない直前の変更点や特に注意す
るべき項目などの重要な情報を記載しています。マニュアルやその他のドキュメントの
内容を置き換える情報もありますので、記載されている情報を注意してお読みください。

*** ライセンス期限は2006年9月30日までとなります ***

=====================================
前回のリリースからの変更点
=====================================

以下は最近のリリースでの変更の概要です。

=============================
リリース 2.0 での変更
=============================

* ステーショナリの変更
------------------------

リリース2.0以前のリリース用の古いステーショナリを削除しました。
削除されたステーショナリは参考用として
   Examples\NITRO\Old_Stationery\CWforDS1.2
に置いてあります。


* Examplesの変更
-----------------
プロジェクトファイルを、リリース 2.0のIDE用に変換しました。


* ビルドツールの変更
--------------------

n/a         [機能の実装] 関数宣言で __declspec(noinline) と
            __declspec(noinlining) が使用できるように、コンパイラが変更され
            ました。
n/a         [機能の実装] ipaモードに関わらず全てのプラグマのスコープを同じに
            するため、-ipa fileモードでのプラグマの状態を、各関数で保存と復元
            するようにしました。
MTWX14401 - [機能の実装] "Pool Strings"がオフ（デフォルト）の場合のパフォー
            マンスを改善するため、再実装されました。
            詳細については ARM_Compiler_Notes.txt を参照してください。
MTWX17667 - [機能の実装] 算術ライブラリのサイズの最適化。
            使用されない算術関数のデッドストリップの改善により、算術ライブラ
            リのサイズが全体的に減少しました。
            ユーザーは、32ビットの符号付および符号無しの除算ルーチンについ
            て、"_sz.a"タイプのライブラリをリンクすることで、除算ルーチンの
            のコードサイズを改善することができます。
            詳細については ARM_Compiler_Notes.txt を参照してください。
MWGD52    - [機能の実装] 内容が異なる構造体に対して、複数のソースで同じ名前が
            つけられて使用された場合に、リンカがエラーを表示します。
            詳細については ARM_Linker_Notes.txt を参照してください。
MWGD44    - [機能の実装] LCFファイルに、シンボルの検索ルールを指定する機能
            "SEARCH_SYMBOL" を追加しました。
            ARM_Linker_Notes.txt に説明と使用例がありますのでご参照ください。
n/a       - CodeWarrior for NINTENDO DS 1.x のコンパイラでは、各ソース(コン
            パイル単位)内の変数は、各変数ごとに個別のELFセクションに書き出
            されていました。新しいコンパイラでは、ソース内の変数は1つのELF
            セクションにまとめて書き出されます。
            この変更は、リンカコマンドファイル(LCFファイル)でALIGNALL(n)指定
            を行なっている場合の、変数の配置（バウンダリ）に影響を与えます。
            ALIGNALL(n)はELFセクションに対する配置の指定ですが、以前は各変数
            が独立したセクションに置かれていたため、結果として、各変数への指
            定として機能していました。
            新しいコンパイラを使用した場合、ELFセクションの先頭に置かれた変
            数をのぞき、ALIGNALL(n)で指定された位置に必ずしも配置されなくな
            ります。各変数のセクション内の配置は、データ型に応じて決定され
            ます。変数に対して配置バウンダリを指定したい場合は、ソース上で
            __attribute__ ((aligned(n))) を使用してください。
n/a       - ローカルスコープ内からの参照が無いグローバルデータをデッドストリ
            ップできるようにするため、そのようなデータを独自のELFセクション
            に移動させました。これは -ipa fileモードの場合にのみ有効です。
            詳細については ARM_Compiler_Notes.txt を参照してください。
n/a       - #pragma force_func_export on|off|reset を追加しました。このプラ
            グマは、スタティック宣言されている C 関数を参照されているものと
            してマークし、想定外のデッドストリップを抑止するのに役立ちます。
            詳細については ARM_Compiler_Notes.txt を参照してください。
n/a       - Build Tools Reference マニュアルを更新しました。


* デバッガの変更
--------------------
MWGD229   - ステップインで入った関数内からRun操作すると、関数呼び出し直後の
            位置で実行が停止してしまう


=============================
リリース 2.0 ベータ 3 での変更
=============================

ベータ3での前回のリリースからの変更

* ステーショナリの変更
--------------------

SDK3.0用の全てのステーショナリで、プロシージャ間解析(IPA)のデフォルト設定が
'File'になっています。（機能要望 MWGD213）


* ビルドツールの変更
--------------------

IPA Fileの使用について：

v1.2コンパイラからv2.0コンパイラに移行する事によって .dataと.rodataセクション
が大きくなる場合があります。コンパイラの最適化機能 プロシージャ間解析(IPA) で
この増加を抑制できる場合があります。コマンドラインコンパイラでは "-ipa file"
を使用します。IDE使用時は C/C++ LanguageパネルのIPA設定で "File"を指定します。
SDK3.0ステーショナリではIPA Fileがデフォルトで指定してあります。

リンカ：
- リンカで、同じファイル名を、異なるオーバーレイモジュールに対して指定できる
  ようになりました。（F-38）：

  リンカは次の例についてリンクできるようになりました。

  .sec1:ovl1 {
      file1.o (.text)
      file3.o (.text)
  } > seg1

  .sec2:ovl2 {
      file2.o (.text)
      file3.o (.text)
  } > seg2

  このケースでは、file3.oはオーバーレイ"ovl1"および"ovl2"の構成要素です。
  リンカ制御ファイルの新しい文法に注目して下さい。セクション指定の後ろで、
  オーバーレイ名を明示的に指示できます。このオーバーレイ名は省略可能で、
  1つまたは複数のファイルが複数のオーバーレイから使用される場合にのみ必要
  になります。このオーバーレイ名はコマンドラインの -overlay (-ol) で指定
  されたオーバーレイの名前と必ず一致していなければなりません。

  上記の文法は以下と同等です。

  .sec1: {
      GROUP(ovl1) (.text)
  } > seg1

  .sec2: {
      GROUP(ovl2) (.text)
  } > seg2 

  GROUP(<name>)の使用法について注意して下さい。<name>は -overlay で指定さ
  れる一つのオーバーレイを表します。-overlaygroup で指定されるオーバーレイグ
  ループ名を表すのではありません。

  オブジェクトファイル名の代わりにライブラリの名前も使用できます。

  使用例:

  .sec1:ovl1 {
      file1.o (.text)
      lib1.a (.text)
  } > seg1

  .sec2:ovl2 {
      file2.o (.text)
      lib1.a (.text)
  } > seg2

  通常はコマンドラインでファイル名が重複している場合は警告が発生します。１つ
  のオーバーレイグループの一部としてのファイルの重複に対しては警告は発生しま
  せん。

  異なるオーバーレイグループにある複数のオーバーレイ間ではファイルの重複はで
  きません。

  IDEではオーバーレイグループでファイルを重複させる事ができないため、この機能
  はコマンドラインリンカにだけ適用されます。


* 既知の問題
--------------
- デバッガは、局所的なスコープの変数に対して正しい値を表示しない場合がありま
  す（MWGD204,MTWX18350）。対処法：デバッガのツールチップ機能を使うことでその
  変数の正しい値を調べることができます。


============================
リリース2.0 Beta 2 での変更
============================

このツールのリリース2.0には、新しい、改良された ARMコンパイラが含まれて
います。C++規格での最近の変更をサポートしている新しいフロントエンドと、
その他のバックエンドの改良が行われています。変更概要はこの下および「リ
リース2.0 Beta 1 での変更」に記しています。

もしも、既に CodeWarrior for NINTENDO DS 1.2 またはそれ以前のバージョンが
置かれているシステムに対してインストールしようとする場合は、本バージョン
のインストーラが NITROSDK_ROOT などの既存の環境変数を上書きする事にご注
意ください。

他のバージョンのCodeWarrior、あるいは以前のバージョンのNITROツールとの、
上書きインストールまたはマージインストールには対応していません。

* STRB.A ライブラリの削除
------------------------------
前回のリリースで書いたように、このリリースから*strb.aライブラリが削除されて
います。


* ビルドツールの変更
-----------------------------
ライブラリ：

- 除算ルーチン用のサイズが小さいmathライブラリ

アセンブラ:
- インラインアセンブラでの 'and'オペコード処理のバグ

コンパイラ：
- コンパイラが DWARF2の.debugセクションに文法ブロックを考慮した情報
  を書き出すようになりました。これによりデバッガは変数のスコープ
  に応じた情報を表示できるようになります。

- "Pool Strings"がオフの場合のパフォーマンスの問題が修正されました。

- Javaスタイルの "override"/ "final" エラーチェック

    関数のオーバーライドをチェックするために、 __declspec()と __attribute__()
    で "final" と "override" を使用できるようになりました。

     struct A {
         virtual __declspec(final) void vf1();
         virtual void vf2();
     };
     struct B : A {
         void vf1();                         // ERROR
     };
     struct C : A {
         __declspec(override) void vf2();    // OK
         __declspec(final) void vf3();       // OK
     };
     struct D : A {
         __declspec(override) void vf();     // ERROR
     };
     struct E {
         __declspec(override) void vf();     // ERROR
     };
 =>
     Error   : the 'final' function 'A::vf1()' is overridden by 'B::vf1()'
     Test.cpp line 7   };  

     Error   : the 'override' function 'D::vf()' does not override any 
               inherited functions
     Test.cpp line 14   };  

     Error   : the 'override' function 'E::vf()' does not override any 
               inherited functions
     Test.cpp line 17   };  


- プラグマの追加 warn_possiblyuninitializedvar on | off | reset (default: off)

   このオプションをオンにすると、コンパイラは、警告「初期化されていない変数」
   の表示に先立って、変数に対する値の割り当て（assignment）を、データ処理フ
   ローの＜全てのパス＞についてテストします。
   オフの場合の動作は、変数の使用に対する値の割り当てが＜どこかのパスにある＞
   事をテストします。

        static int test()
        {
            int a;
            while (1) {
                a = sub(a);
                if(a)
                    break;
            }
            return a;
        } 

   通常、この例では警告は発生しません。なぜなら'a'の使用（sub(a)）に対して、
   'a'への値の割り当てが（a = sub(a)）がこのループ中にあるからです。
   #pragma warn_possiblyuninitializedvar がオンの場合、コンパイラは強制的に、
   このループへの突入パスを含めた＜全ての＞パスをチェックします。この、ループ
   に突入するパスには 'a'の初期化なしの'a'の使用があるので、警告「初期化され
   ていない変数の使用」が生成されます。


上記のビルドツールの変更の詳細および、2.0でのその他のコンパイラの変更
についてはリリースノートファイルに記されています。

..\Release_Notes\ARM\Compiler_ Release_ Notes\ARM_Compiler_Notes.txt
..\Release_Notes\ARM\Compiler_ Release_ Notes\CW C-C++ Notes 4.x.txt


============================
リリース2.0 Beta 1 での変更
============================

* STRB.A ライブラリの削除
------------------------------
このリリースには *.strb.aライブラリが含まれていますが、これらは次回(ベータ）
のリリースで削除されます。


* ユーザー指定のデータセクションのサポート
------------------------------------------
ユーザー指定のリードオンリーデータセクションを指定できます。
#pragma define_section.

例）
#pragma define_section mysection, ".mydata", ".mybss", ".myrodata", abs32, RWX

const修飾されたデータをユーザー指定のセクションに置く場合にこのpragmaを使
用します。使用しない場合、constデータは .rodata セクションに配置されます。


* インラインアセンブラの .ALIGN 擬似命令
------------------------------------------
コンパイラのインラインアセンブラで .align 擬似命令を使えるようになりました。
使用法:
	.align <arg>

ここで <arg> は定数です（評価式は使用できません）。<arg> は0より大きい2の
累乗の定数でなければなりません。alignの引数の最大値は 8192 です。
.alignは、次に現れる命令または擬似命令を、引数の値に合わせて整列配置させ
ます。
一つのインラインアセンブラブロック内で.align擬似命令を複数使用することも出
来ます。通常、.align擬似命令を持つ関数は、その関数内のすべての.alignの中で
最も大きい値に整列配置させられます。これは関数デッドストリップ指定が有効な
場合に真です。

もしもコンパイラでデッドストリップ指定が無効（target settingsパネル "Permit 
dead-stripping of functions" のチェックがオフ）だった場合、個々の関数は、そ
の関数内のすべての.align指定の最大値に必ずしも整列配置されるとは限りません。
コンパイラは基本的に、デッドストリップを無効にすると、定数を集め、そしてより
効果的なグローバルおよびスタティック変数のアドレス定数へのアクセスを得る為に、
複数の関数を結合します。
結合された関数は同じオブジェクトコードセクション内に置かれることになります。
そしてこのオブジェクトコードセクションが .align 指定の最大値に合わせて整列さ
せられます。
デッドストリップが無効の場合は、関数の整列配置に関しては当てに出来ません。
しかしながら、関数内の .aline指定されている命令または擬似命令の整列配置は
指定の通りに行なわれます。


* インラインアセンブラにおいて、LDR命令とLDA命令でラベルを使用できるよう
  になりました。
--------------------------------------------------------------------------
コンパイラ内蔵のインラインアセンブラで、ldr命令とlda命令でのラベルの使用が
可能になりました。

例：
        asm {
                ldr r0,=L1
                lda r1,L2
L1:
L2:
        }

ここでの L1 と L2 は正しいインラインアセンブララベルです。ラベルは、それを
参照している関数の内部に定義されていなければなりません。


* TRAILING COLONS NOW SUPPORTED IN INLINE ASSEMBLY
--------------------------------------------------
インラインアセンブラのラベルで、オプションの後続コロンを使用できるようになり
ました。

例:
	asm {
	label1
	b @label1
}

及び、
	asm {
label1:
	b @label1
}

上記２つは同じです。ラベルは行内のどこにでも書けます。ラベルが置かれている行
には、オペコードを書いても書かなくてもかまいません。


* 警告レベルを選択するための、コマンドラインフラグの変更
--------------------------------------------------------
警告レベルを選択するための、コマンドラインフラグが変更されています：

'-w most' は以下の警告を有効にします。
	"illegal #pragmas",
	"empty declarations",
	"possible unwanted effects",
	"unused arguments",
	"unused variables",
	"extra commas",
	"pedantic error checking",
	"hidden virtual functions",
	"passing large arguments to unprototyped functions",
	"use of expressions as statements without side effects",
	"lossy conversions from pointers to integers",
	"token not formed by ## operator",
	"return without a value in non-void-returning function",
	"inconsistent use of 'class' and 'struct'",
	"incorrect capitalization used in #include \"...\"",
	"incorrect capitalization used in #include <...>",

'-w all' は、上記の警告と次のものを有効にします：
	"implicit arithmetic conversions; implies '-warn impl_float2int,impl_signedunsigned'",
	"implicit integral to floating conversions",
	"implicit floating to integral conversions",
	"implicit signed/unsigned conversions",

'-w full' は、上に記した全てのものに加えて、以下も有効にします。
	"use of undefined macros in #if/#elif conditionals",
	"'inline' functions not inlined",
	"padding added between struct members",
	"result of non-void-returning function not used",
	"any conversions from pointers to integers",


* ランタイムライブラリのパスの変更
----------------------------------
ランタイムライブラリの変更に伴い、ランタイムライブラリへのパスが以下の
位置になりました。

       Runtime/Runtime_ARM/Runtime_NITRO/lib.

この変更は、NITRO-SDKのライブラリおよびdemosの最ビルドに対して影響があります。
NITRO-SDK と NitroSystemライブラリをビルドするには、以下の変更を行う必要が
あります。

変更対象のファイル:
   NITRO-SDK内のbuild/buildtools/commondefs.cctype.CW

変更1. 
    Make変数 CW_LIBDIRS で指定されているランタイムライブラリの位置を
        $(CW_ARMDIR)/Runtime/Lib    \
    から
        $(CW_ARMDIR)/Runtime/Runtime_ARM/Runtime_NITRO/Lib \
    に変更する。

変更2. 
    Make変数 CW_INCDIRS で指定されている MSL ヘッダの位置に、
        $(CW_ARMDIR)/msl/MSL_Extras/MSL_ARM/Include \
    を加える。


* 既知の問題
--------------
以下の問題については現在調査を行っており、今後の更新で対応する予定です。

- 新しいコンパイラを使用してビルドした UFO-demo サンプルを実行すると次の
  エラーが発生します。
    'mi_dma.c:280 Panic: source address must be in 4-byte alignment"

- コンパイラが以下のメッセージを表示する場合があります。
    "Error   : Optimizer computes it would need more than 172M of memory 
    to compute register def-use chains.  Key Optimizations Failed
    Limit currently set to 150M
    Increase limit using '#pragma opt_defuse_mem_limit 172
    XXXX.c line NNNN"
  このメッセージ自体は正しいものです。しかしながら、このメッセージに従って
      "#pragma opt_defuse_mem_limit 172"
  を記述してもillegal #pragmaの警告が発生してしまいます。

- MWGD194    malloc() と free() を使うとリンクエラーが発生する
- MTWX15440  日本語版Windowsで、C/C++ LanguageパネルのInline Depthドロップ
             ダウンリストの "Don't Inline" が文字化けしている


1.2 Service Pack 3 での主な変更
=====================================

* コンパイラの修正
------------------
いくつかの報告された問題を修正しました。本文書末にある修正リストをご参照下さい。

* LINKER FIXES
---------------
いくつかの報告された問題を修正しました。本文書末にある修正リストをご参照下さい。


このリリースでのその他の変更:


NITRO-SDK 3.0 対応のステーショナリ
-------------------------------------------------------------------
本リリースには NITRO-SDK 3.0 に対応したステーショナリが含まれています。
NITRO-SDK 3.0 は年内に任天堂株式会社様よりリリースされる予定です。
※ NITRO-SDK 2.2 をご使用の場合は、ステーショナリは SDK2.1用のものをご
   使用ください。

SDK3.0用のステーショナリでは、
・nitro.h をプリコンパイル済みヘッダで使用しています。
・Nitro TS Debug ターゲットでの Optimize For の指定（Global Optimizations
  パネル）で "Smaller Code Size" が選択されています。

プリコンパイル済みヘッダを使用しないように変更する方法につきましては、この
ステーショナリを使ってプロジェクトを生成した際に自動的にプロジェクトに登録
される ReadMe.txt をご参照ください。

Optimize For "Smaller Code Size"は、NITRO-SDKで NITRO_DEBUG=trueを指定した
場合と同等な指定です。



バックアップデバイスウィンドウでの新機能
-------------------------------------------
バックアップデバイス ウィンドウ（Nitroメニュー --> "Backup Memory..."）に
次の機能が追加されました。
・デバイスへの特定の値の書き込み、デバイス内容の一部の書き換え機能(MWGD71)
・DSサブカード "4M FLASH"、"256K FRAM"への対応(MWGD142)
これらの機能を使用するには、IS-NITRO-DEBUGGER の Version 1.61 以降をインス
トールしてください。



プリコンパイル済みヘッダ内で競合するdefine値があった場合のエラー表示
-------------------------------------------------------------------
コンパイラは、先行して定義されているマクロの値がプリコンパイル済みヘッダ内で
の定義と異なる場合にエラーを表示して停止するようになりました。(MWGD60)

     --- my.pch++ --
     #pragma precompile_target "my.mch++"

     #define NG_VALUE 123
     #define OK_VALUE 456
     ---------------

     --- test.cpp ---
     #define NG_VALUE 1234
     #define OK_VALUE 456

     #include "my.mch++"            // NG_VALUEが再定義される為、エラーが
                                    // 発生しコンパイルは中断。
                                    // OK_VALUEはエラー無し。

     ----------------
 
         =>
 
     Error : macro 'NG_VALUE' redefined test.cpp line 4   #include "my.mch++"



Thumbモードで大きなswitch文があった場合の動作(MWGD68)の変更
(#pragma big_switchの新設)
-----------------------------------------------------------------------------
switchステートメントのトータルサイズが32Kバイトを超える場合に次のエラーを
発生させるようになりました。
    "Thumb mode switch range is 32K bytes, use '#pragma big_switch on' 
    option for large switches in Thumb mode"

Thumbモードの場合、デフォルトではメモリを節約するために16ビットのスイッ
チテーブルが使用されます。Thumbで32Kバイトを超えるスイッチステートメント
が必要な場合は、必要なswitchステートメントに対して次のpragmaを使用して下
さい。このpragmaはbuild80コンパイラで新しく設けられたものです。

    '#pragma big_switch on|off|reset'

これにより、32ビットのスイッチテーブルが使用されるため、コードサイズは大き
くなります。
#pragma big_switch は ARMモードでは効果がありません。

#pragma big_switch on 
    switch (value)
    {
    ... very large switch cases ...
    }
#pragma big_switch reset



複数オーバーレイモジュールへ対応の改善
---------------------------------------------------
常駐領域及び複数のオーバーレイグループのモジュールから同一の関数が使われ
る状況において、複数のオーバーレイグループが存在していて、常駐領域にある
関数の実体がインライン化によって無くなった場合に、各オーバーレイモジュー
ルそれぞれに実体を持つ事を許可しました。
常駐領域にある関数の実体がインライン化されずに残る場合は、各オーバーレイモ
ジュールからは関数の実体は取り除かれ、各オーバーレイモジュール内からは常駐
領域に存在している関数の実体を呼び出します。
(MTWX19574)



Thumb関数の4バイト境界配置
---------------------------------------------------
Thumbモードの場合、コンスタントプールへの正しいアクセスを確実にするため、関数
が4バイト境界に配置されるようになっています。以前は2バイト境界で配置されてい
ました。
後続の関数を4バイト境界に配置させるために、Thumb関数の後部にパディングワードが１つ置かれる場合があります。



ドキュメント、ヘルプシステムの更新
---------------------------------------------------
・IDE 5.7 Automation Guide を日本語化しました。
・ヘルプの検索タブで、検索結果の絞り込み方法を指定できるようになりました。
・NITRO-SDK関数リファッレンスマニュアルを NITRO-SDK 2.2 対応のものに更新し
  ました。



1.2 Service Pack 2 での主な変更
=====================================

* ライセンスの更新
-----------------
ライセンスファイルを更新し、2006年3月31日まで有効としました。

* コンパイラの修正
----------------
いくつかの報告された問題を修正しました。本文書末にある修正リストをご参照下さい。

* デバッガの修正
----------------
いくつかの報告された問題の修正のため、デバッガプラグインとIDEを更新しました。
本文書末にある修正リストをご参照下さい。


1.2 Service Pack 1での主な変更
=====================================

* コンパイラの修正
--------------------
コンパイラについて、いくつかの報告された問題を修正しました。本文書末にある修正
リストをご参照下さい。


* インラインアセンブラによるコード最適化動作についての注意
-----------------------------------------------------------
インラインアセンブラブロックに対するコード最適化は、デフォルトでは無効になって
います。.nonvolatile 疑似命令を使用して最適化を有効にした場合、プログラマは、
実際に生成されたコードが正しく、また期待した通りである事をチェックして下さい。
CodeWarriorのコンパイラは、インラインアセンブルブロックを最適化する場合であっ
てもほとんどの場合に正しいコードを生成します。しかしながら、プログラマはどのよ
うなコードでも記述可能であり、コンパイラの最適化機構が全てのケースに対して正し
く働く事は、残念ながら保証できません。


* 最適化レベル1以上を指定した場合の.volatile インラインアセンブラ生成コード
-----------------------------------------------------------------------------
今回のリリースに含まれるコンパイラにて、
「インラインアセンブラブロックをコンパイルすると、.volatile指定であっても 最適
化レベル１以上が指定されている場合はインラインアセンブルの範囲内に関数のエピロ
ーグコードのコピー挿入される」というケースが見つかっています。（ある種の最適化が
抑止しきれていないものであって、プログラムの動作自体は正しい）
次回にリリースするコンパイラでは、.volatile指定時、このエピローグコードの自動コ
ピーは行わなくなる予定です。



1.2での主な変更
=============================

* NITRO SDK 2.1 への対応
-----------------------
このリリースでは Nitro SDK 2.1に対応したステーショナリとExamplesが含まれていま
す。
次の変更が行われています。

- ROMスペックファイル(ROM-TS.rsf)にRomSpeedTypeが追加されました
- LCF Prelinkerパネルで、DTCM アドレスが0x027e0000に変更されました
- ステーショナリで使用する浮動小数点ライブラリが FP_fastI_v5t_LE.aに変更され
  ました

詳細についてはNitro SDK 2.1のリリースノートをご参照下さい。
以前のバージョンのCodeWarriorで作成されたプロジェクトファイルをSDK 2.1と共に使
用する場合は、SDK 2.1 に合わせるための変更を手動で行う必要があります。


* ワンタイムPROM対応 (MTWX18201)
-----------------------------------
本リリースで、Nitro SDK が 2.1からサポートしたワンタイムPROMとよばれるROMに対
応しました。
IDEのExamplesにもワンタイムPROMを使用したサンプルが追加されています。

{CW}\bin\Examples\NITRO\SDK2.1\ARM9-TS\SDK-demos\card 

この機能を使用する場合は予めNITRO-SDK 2.1 をインストールしておく必要があります。
ワンタイムPROMについての詳細は NITRO-SDKのドキュメントをご覧下さい。


* スタティックシンボルに対して汎用シンボル名を生成する機能を追加(MTWX17942)
--------------------------------------------------------------
コンパイラで、スタティックシンボルのシンボル名を汎用名(generic symbol name)に
置き換えて生成できるようになりました。
ライブラリなどのバイナリファイルが逆アセンブルされた場合、スタティックシンボル
の解析によって内部構造などの詳細情報が読みとられてしまう可能性がありますが、こ
の機能は、バイナリファイル中のスタティックシンボルを隠蔽するのに有用です。
この機能を使用するとARMコンパイラはスタティックシンボル名を一般的な名前に置き
換えます。例えば "my_local" を "@1234" に置き換えます。この機能はデバッグ情報
生成が無効（-gを指定しない。またはIDEのプロジェクトウィンドウのファイルビュー
で、各ソースに対応するの虫アイコン列の黒丸をオフにする）のときにのみ機能しま
す。この機能の実装のため次の変更が行われました。

- Nitro CodeGenパネルに新しいチェックボックス「Use generic symbol name
  for static symbols」が追加されました。

- コマンドラインコンパイラに新しいオプションフラグ
  "-generic_symbol_names on|off"が追加されました。この指定で新機能を
  有効化／無効化できます。

- プラグマ "#pragma generic_symbol_names on|off" でも、この機能を有効化／
  無効化できます。


* ROM内登録データの表示機能 (MTWX17648)
-----------------------------------
フラッシュメモリ内のROMイメージのヘッダを表示出来るようになりました。メーカ
コードやタイトル、ROMサイズなどの項目の内容をCodeWarriorから確認できます。


* カード／カートリッジの抜き取りのエミュレーション機能 (MTWX17573)
----------------------------------------------------------------
CodeWarriorのデバッガで、カードまたはカートリッジをスロットから抜き取った場合
のエミュレーションができるようになりました。指定はNitroメニューから行います。


* カード／カートリッジスロットの自動電源オン機能 (MTWX17616)
-----------------------------------------------
カードまたはカートリッジスロットの電源を、プログラム開始時に自動でオンさせる事
ができるようになりました。



1.2でのその他の変更と修正
=============================

* メニュー項目 "Flash..." と "Backup memory..." の変更
--------------------------------------------------------
Nitroメニューの項目 "Flash..." と "Backup Memory..."の動作を変更しました。
今回のリリースから、これらのメニュー項目はデバッガが立ち上がっていない時に有効
になり、デバッガが実行されている時には無効になります。
この変更により、これらの機能を使った後でターゲットをリセットする必要が無くなり
ました。また、デバッガを起動していない状態でもROMバイナリを書き込めるようにな
りました。


* インラインアセンブラが、デフォルトでは最適化を行わなくなりました
 (MTWX18053, MTWX18534)
-----------------------------------------------------------------------
インラインアセンブラが、デフォルトでは最適化を行わなくなりました。さらに、次の
疑似命令をソース中に置くことでインラインアセンブラの最適化を制御できるようにな
りました。
   .volatile    - アセンブラコードが最適化されてはいけない事を指示します。
   .nonvolatile - アセンブラコードが最適化されてよい事を指示します。

注意：
この機能はステートメントレベルのインラインアセンブラに対してのみ有効です。関数
レベルのインラインアセンブラには効きません（関数レベルのインラインアセンブラで
は、最適化は常に無効です）。

例を示します。

int func(void) {
   asm {
        .volatile
      mov       r0,#1
      bl        label1
      mov       r0,#2     // 残る
      b         label2    // 残る
label1:
      mov       r0,#3
      mov       r0,#4
label2:
      mov       r0,#5

       .nonvolatile
label_A:
      mov       r0,#1
      bl        label3
      mov       r0,#2      // 削除される
      b         label4     // 削除される
label3:
      mov       r0,#3
      mov       r0,#4
label4:
      mov       r0,#5
   }
}

重要：
コンパイラは依然として "非到達ブロックの削除"など、ある種の最適化を行います。
これは最適化レベルがゼロであっても行われます。これは.nonvolatile指定時の既定の
動作です。最適化が行われない事を確実にするには .volatileを指定する必要がありま
す。

注意：
本リリースでは、最適化レベルが0以外の場合は ".volatile"指定にもかかわらず最適
化が行われてしまいます。この問題は次のパッチリリースにて修正される予定です。


* #pragma options align の動作 (MTWX17415)
--------------------------------------------
Nintendo DS 用 ARMコンパイラは"#pragma options align" に対応していません。しか
しこれらが使用されていた場合でも警告メッセージが表示されないという問題がありま
した。これについて動作が変更されました。
互換性の為に"#pragma options align=native"は依然として受け付けますが、効果はあ
りません。他のalignオプションは 'Illegal Pragmas'の警告表示が有効な場合には、
警告の対象になります。


* Thumbコードのデバッグの問題の修正 (MTWX18017, MTWX18277, MTWX18581)
------------------------------------------------------------------
Thumbでのデバッグに関して報告されたいくつかの問題が、このリリースで修正されま
した。


* 正しくないベニアが生成される場合があった (MTWX18284)
-----------------------------------------------------
特定のケースにおいて、ロングブランチベニアの生成の際に、さらにステート切り替え
のベニアを間違って生成する問題がありました。このリリースで修正されました。



1.1での主な変更：
====================================

* アセンブラが複数桁のローカルラベルをサポート
------------------------------------------------
アセンブラは複数桁のローカルラベル（例 1000:）をサポートするようになりました。
これまでは一桁のローカルラベル（0:から9:）だけが使用可能でした。


* ロードされていないオーバーレイ内のブレークポイント
----------------------------------------------------
ロードされていないオーバーレイに対してブレークポイントを設定できるようになりま
した。これまでは、対象オーバーレイがロードされた後でブレークポイントを設定する
必要がありました。
サポートされているのは単純なブレークポイントのみですのでご注意下さい。現時点で
はイベントポイントやログポイントなどはサポートされていません。


* 新しいNitro LCF Generator/プリリンカ
--------------------------------------
SDKツールの makelcf に渡す LCFテンプレートファイルをユーザーが指定できるように
なりました。LCF Prelinkerパネルから指定します。また、このパネルから ITCMおよび
DTCMのアドレスを指定できるようになりました。


* 新しいNitro Makeromポストリンカ
----------------------------------
プロジェクトのデフォルトのポストリンカとして、今までのバッチランナポストリンカ
に換え、新しくNitro Makeromポストリンカを使用するようになりました。
このMakeromポストリンカはプロジェクトで各種指定が可能で、Nitro SDKツールの
compstatic.exe および makerom.exe をサポートしています。
今までとの互換性は維持されていますので、既存プロジェクトの設定を変更する必要は
ありません。


* 環境変数 NITROSDK_ROOT の自動生成
-----------------------------------
インストーラは、設定されたNitro SDKの位置に基づいて環境変数 NITROSDK_ROOT を自
動的に生成するようになりました。これまでは、この環境変数の作成を手動で行う必要
がありました。



1.1でのその他の変更と修正：
====================================

* コマンドラインリンカのライブラリ検索パス
------------------------------------------
MTWX14095の修正により、コマンドラインリンカが検索パスを扱う方法が変更されまし
た。これまでは -L で指定されたライブラリ検索パスが逆順に使用されていました。
例えば mwldarm -Lpath1 -Lpath2 -Lpath3 と指定された場合、まずpath3が、次に 
path2が、最後に path1 が検索されていました。
本リリース以降、コマンドラインリンカはライブラリ検索パスを指定された順番で使用
します（デフォルト）。上記の例では、まず path1が、次にpath2が、最後にpath3とい
う順番です。

注意：
もしも複数ライブラリ内に同じシンボル名があり、それらのライブラリファイルが検索
パス中の別の位置に置かれていた場合、この修正が、開発中のアプリケーションの動作
を変える可能性があります。

これまでの動作と互換性を維持するため、検索順を逆にするオプション
-reverselibsearchpath が追加されています。


* アセンブラソースデバッグ
----------------------------
MTWX17414の修正により、シンボル生成の問題によりアセンブラのソースデバッグが出
来ないという問題が修正されました。
ただし、デバッガがデバッグ時に確実にソースを表示できるよう、.function 疑似命令
を使ってNitroMainを特定する必要があります。
例）
    .function "NitroMain", NitroMain, NitroMain_end-NitroMain
NitroMain:
	and r1, r2, #1
	orr r1, r2, #1
	tst r1, r2
	mov r0, r2
lp:
	b lp
NitroMain_end: 


* Version 1.0.2 Hotfix 2 以降の #pragma pack の警告
-----------------------------------------------------
Version 1.0.2 Hotfix 2 で修正された 「不正なpragmaに対して警告が表示されない
(MTWX15156)」により、"#pragma pack" の Warningが表示されていましたが、Nitro SDK
 2.0 RC5以降、このpragmaがSDKのヘッダから削除されております。
これにより、 -pragma "warn_illpragma off" による警告の抑止はいらなくなりました。


* ステーショナリとExamplesプロジェクトの変更
--------------------------------------------
新しいNitro LCF Generator/プリリンカを反映させるため、デフォルトステーショナリ
とExamplesが変更されました。
- バッチランナポストリンカ用のバッチファイルは削除されました。
- プリリンカとして Nitro LCF Prelinker を使用するようになりました。
- ポストリンカとして Nitro Makerom Postlinker を使用するようになりました。


このリリースに含まれる新機能や変更点の詳細については、Release_Notesフォルダ内の
各機能ごとのリリースノートも参照してください。



===============================================================================
ハードウェアデバッガでのウォッチポイントサポート
===============================================================================

IS-NITRO-EMULATOR（製品版）との組み合わせで、デバッガでのウォッチポイント機能を
サポートしました。この機能は、TEG ボードおよび TS ボードとの組み合わせではサポ
ートされていません。設定の詳細については、「Targeting NINTENDO DS」 マニュアル
を参照してください。
NITRO Debugger 設定パネルにオプションが追加され、設定したいウォッチポイントの
種類をドロップダウンリストから選べられるようになりました。以下が選択可能です。

      Read Only
      Write Only
      Read and Write
      Select On The Fly

Select On The Flyを選択すると、ウォッチポイントを設定するたびにその種類を指定
するためのダイアログが表示されます。

================================================================================
デバッガのトレース機能とプロファイリング
================================================================================

プロジェクトでプロファイルデータの表示用にプロファイリング機能を使用すると、「デ
ータ」メニューの「トレースを表示」メニューが使用可能になりますが、現時点ではトレ
ース機能はデバッガでサポートされていないため、トレースウィンドウには有効なデータ
は表示されません。

================================================================================
デバッガの問題点
================================================================================

- ハードウェアデバッガでは、直接コーディングされたブレークポイントに対するステッ
  プオーバーを現在正しく行えません。（例）asm(bkpt 0)
  このような場合、デバッガは"Failed to stop process"というメッセージを表示し
  ます。ブレークポイントはデバッガの GUI で設定するようにしてください。

- Ensata エミュレータの設定ファイル（est_cw_debugger.ini）が正しく設定されていな
  い状態でデバッグを実行しようとすると、デバッガはユーザに設定を行うようにエラー
  ダイアログを表示します。これは通常のデバッガの動作ですが、エラーダイアログが表
  示された後にIDEを終了すると、IDE が異常終了する場合があります。この状況を避け
  るためには、Ensata の設定ファイルに正しいパスを設定してください。

- デバッガは2バイトコードを含むフォルダ内にあるROMバイナリファイル(.srl)のロード
  ができません。

- デバッガの"リモート接続" 設定が正しく表示されなくなる問題が報告されています。
  正しく表示されない場合は、IDEメニューから「編集 - 環境設定」を開き、
  「デバッガ->リモート接続」から「リモート接続」の設定を一度削除し、再度作
  成しなおしてください。

- デバッグプロセスのデタッチと再アタッチの実行後にリスタートを行うとIDEが不正終
  了します。

- IDE メニューの「接続」コマンドは正常に動作しません。

================================================================================
NITRO SDK と malloc() の使用について
================================================================================

NITRO SDK の crt0.o を使用するアプリケーションで MSL C ライブラリの malloc() 関
数を使用するためには、 あらかじめ NITRO OS のAPIを使用してヒープの初期化を行って
ください。malloc() 関数は __sys_alloc() 関数を使用してカレントヒープからメモリを
取得します。

ランタイムライブラリソースにも NITRO SDK の API を使用してヒープを作成するための
関数 __init_hardware() が用意されています。

__init_hardware()は"\Metrowerks\CodeWarrior\ARM_EABI_Support\Runtime\(Sources)\
ARM_Specific_Sources\__NITRO_eabi_init.c"で定義されています。

================================================================================
IS-NITRO-DEBUGGER ソフトウェア
================================================================================

このバージョンの Stationery と Examples では、"libisdmainparm.a" をデバッグ出力
を行うために使用しています。CodeWarrior のインストール前にIS-NITRO-DEBUGGER をイ
ンストールする必要があります。

**** 重要 **********************************************************************

CodeWarriorデバッガからIS-NITRO-EMULATOR ハードウェアを使用するためには、
IS-NITRO-DEBUGGER ソフトウェア（v083_04071610以降）をインストールする必要があり
ます。DLL の不整合に起因する問題を避けるために、NTSC-ONLINE または製品 CD から利
用可能な最新の IS-NITRO-DEBUGGER ソフトウェアをインストールするようにしてくださ
い。

IS-NITRO-DEBUGGER ソフトウェアをインストールしていない状態で CodeWarrior のイン
ストールを行ってしまった場合には、以下の手順で CodeWarrior のインストールを完了
してください。

１）IS-NITRO-DEBUGGER ソフトウェアをインストールしてください。
    インストール時に、CodeWarrior IDE ソースツリーで必要となる IS_NITRO_DIR 環境
    変数が作成されます。
２）CodeWarrior インストールフォルダ内の以下のバッチファイルを実行してください。
     .\bin\setNitroSrcTree.bat
    バッチファイルの実行によりソースツリーの設定が正しく行われます。

================================================================================
インストールについて
================================================================================

インストール方法：

１）CW_NINTENDO_DS_R2.0_alpha.exe を実行してインストーラを実行してください。
以前のバージョンや他のCodeWarrior製品への上書きインストールはできませんので、他
のCodeWarrior製品とは別フォルダにインストールするようにしてください。

以前のバージョンをアンインストールしない場合には、CWFolder_NITRO 環境変数の設定
に注意してください。

インストーラの終了時にコンピュータの再起動が必要となります。

２）エディタやデバッガで日本語を表示するためには、「編集 - 環境設定」メニューか
ら「IDE設定」ダイアログを表示し、「フォント & タブ」パネルで日本語フォントを指定
してください。

（例）フォント: MSゴシック, スクリプト: 日本語, 標準エンコーディング: Shift-JIS

３）デバッガのリリースノートを参照してデバッガを設定してください。

環境変数の設定
----------------
インストーラは NITRO SDKのフォルダ位置を検索するようになりました。次の順番で検索
を行います。

    - NITROSDK_ROOT 環境変数
    - IRISSDK_ROOT 環境変数
    - ドライブ C のルート（デフォルトのフォルダ名を使用します）

どの場合でも、インストーラは処理を進める前にパス確認のメッセージを表示します。
ユーザのパス確認後に、インストーラは CW_NITROSDK_ROOT 環境変数の作成を行います。


ソースツリーの設定：
----------------
インストーラは処理の終了前に、再起動を行うためのダイアログを表示します。再起動を
行うことを選択すると、CodeWarrior IDE 用の ソースツリー {NITROSDK_ROOT} を
CW_NITROSDK_ROOT 環境変数を参照するように設定します。

注意：インストール時に環境変数に設定するパスが正しくないと、CodeWarrior プロジェ
クトでのビルドが正常に行えません。ビルドを正常に行うために、CW_NITROSDK_ROOT 環
境変数が正しいパスを指すように修正してください。
また、パス位置表現はオペレーティングシステム標準の表現方法である必要があります。
パス区切りの文字にはスラッシュ '/' では無く、'\'をご使用下さい。もしもスラッシ
ュが使用された場合、IDEが正しく動作しない場合があります。


問題の修正方法
-----------------
再起動中に問題が発生した場合、ソースツリーの作成に失敗しているかもしれません。
インストールの完了にはIDE の起動が必要ですので、インストール時の起動に失敗した
場合には IDE の起動状態が予期しない状態になっているかもしれません。

起動が失敗したような場合には、{CW インストールフォルダ}\bin を開いて、
ソースツリーの追加を行うために setNitroSrcTree.bat を実行してください。

================================================================================
NITRO SDK の互換性
================================================================================

NITRO SDK 更新時の注意
------------------------
新たに NITRO SDK を更新する場合には、CodeWarriorの使用する CW_NITROSDK_ROOT 環境
変数が、使用する NITRO SDK のインストールフォルダに設定されていることを確認して
ください。

================================================================================
修正された問題
================================================================================

リリース 2.0 で修正された問題
-----------------------------

  Number     Problem Addressed
  =========  =================
- N/A        ARM_Compiler_Notes.txtの、Build 110での#pragma force_func_export
             の記述を修正した。
- N/A        fffという整数の自動変数がある場合の、__asm { bl fff }の扱いを
             修正した。
- MTWX20632  インラインアセンブラで (teq r0,r1,lsr #32) がエラー
             "number is out of range"になってしまう。
- MTWX20640  デバッグ情報なしでNITRO-SDK関数のMI_CpuXXX16/32を使用するとコ
             ンパイラがクラッシュする。詳細はARM_Compiler_Notes.txtを参照。
- N/A        コンパイラで、__declspec(noinline) と __declspec(noinlining)を
             使った関数宣言ができるようになった。
- N/A        ipaモードに関わらず全てのプラグマのスコープを同じにするため、
             コンパイラが -ipa fileモードでのプラグマの状態を、各関数で保存
             と復元するようにした。
- MTWX20569  コンパイラでswitch case でbreakでのジャンプ先が正しくない場合
             がある。
- MTWX20581  配列変数に対してデバッグ情報が正しく生成されない。
- MTWX20579  最適化レベルが1以上の場合にtypedefと構造体のデバッグ情報が生成
             されない。
- MWGD44     (F-39) LCFファイルに、シンボルの検索ルールを指定する機能
             "SEARCH_SYMBOL" を追加しました。
- MTWX18802  (D-6) 基本型の typedef に対するデバッグ情報生成
- MWGD52     (F-42) 異なる構造体が別のソース中で同じ名前で使用された場合に
             リンカに警告を表示させる。
- N/A        (F-38) リンカで、複数のオーバーレイで同じソースを使用可能にする
- MWGD213    コンパイラ最適化オプション プロシージャ間解析(IPA)を、デフォル
             トで"File"にするよう、ステーショナリを変更する
- MWGD211    デバッガで、ステップ操作で関数からリターンする際のステップ操作
             の回数が余分に必要になってしまっている
- N/A        (F-14) C++で、キーワード override と final keyword をサポート
- MTWX12261  (F-15)define_sectionプラグマでリードオンリーデータをカスタムセク
             ションを置けるようにする
- MTWX12791  (F-10)インラインアセンブラで、LDR命令でラベルを使用できるように
             する
- MTWX14401  (F-28) "permit dead-stripping of functions" と "Pool Strings" を
             同時に無効にしたい
- MTWX14357  (D-28) #pragmaにより、未初期化変数の使用に対する、改善された警告
             表示をサポート
- MTWX17116  (D-18) デバッガで、値返しのクラスオブジェクトの内容が、関数内で正
             しく表示できない
- MTWX17067  (F-32) サイズが小さいタイプのMathlibの提供
- MTWX17098  (F-6)最適化されたコードでの効果の向上（リテラルプールの最適化）
- MTWX17182  (D-3)ネームスペースに置かれた関数の内部にブレークポイントを置け
             ない
- MTWX17667  (F-34) 整数除算ルーチンのサイズを小さくする。
- MTWX17669  (F-33) 共通処理を切り出すなどで、整数除算ルーチンのサイズを小さく
             する。
- MTWX17716  (D-11) 標準ヘッダで警告"result of function call is not used"が発
             生する
- MTWX17844  (F-10)インラインアセンブラで、LDA命令とLDR命令でラベルを使用でき
             るようにする
- MTWX18238  (O-11)コンパイラが、最適化の際にメンバ関数のconst修飾子を活用し
             ない場合がある
- MTWX18573  (O-32) std::bitset<1>で引数が無視されてデフォルトコンストラクタが
             呼ばれる
- MTWX18350  (F-87) デバッガで、ローカルスコープ変数が正しく表示されない
- MTWX18602  最適化レベル2以上の場合に、volatileとして指定されている変数に
             対するロード命令、ストア命令をコンパイラが生成しない
- MTWX18935  (D-44)-w allを指定してC++ファイルをコンパイルすると、math.h で 
             warningが発生する
- MTWX19404  (O-3) インラインアセンブラで小文字の'and'命令の記述がエラーになる
- MTWX19757  インラインアセンブラで stmfd を使用する場合に、操作対象のレジ
             スタの個数が15を超えると、正しくない命令が生成される。
- MTWX19648  スタンドアロンアセンブラが ldreq命令と ldrne命令に対して間違った
             命令を生成する。
- MTWX19913  インラインされたコードが大量だった場合にコンパイラがクラッシュ
             する
- MTWX20040  C/C++ Languageパネルに Inter-Procedural Analysis (IPA) オプション
             を制御するユーザーインターフェースが無い
- MWGD184    デバッガを実行し直すと既存のブレークポイントが無効になってしまう
- n/a        (F-12) インラインアセンブラで、Thumbの場合のdcd命令の4バイトアラ
             インのサポート
- n/a        (F-13) 新コンパイラでも、サイズゼロの配列を造体メンバとして使用可
             能とする
- n/a        (F-36) デッドストリップオプションとpool string オプションの改善
- n/a        (O-38) MTWX19574と同一内容


1.2 Service Pack 3 で修正された問題
===================================

  Number     Problem Addressed
  =========  =================
- MTWX18157 ウォッチポイントにアクセスしない行でデバッガが実行停止する
- MTWX18240 クラスプロトタイプを使用した場合に、デバッガがクラスのメンバを表示
            出来ない場合があった。DWARF2のプレースホルダクラスタイプ欄と実際の
            クラスタイプ欄を区別できるようにリンカを更新した。
- MTWX18496 デバッガが ADDLS命令のステップ実行操作で実行中状態になってしまう
- MTWX19431 Boost C++ Libraries Version 1.33.0 を使用したプリコンパイル済み
            ヘッダを作成しようとするとコンパイラがクラッシュする
- MTWX19434 LCFファイル中に同じ名前のセクションがあった場合、エラーを発生さ
            せるようにした
- MTWX19445 初期値ありの変数に対してLCFでアドレスを変更された場合に、警告を
            表示するようにした
- MTWX19484 CW for DS 1.2において、#pragma gcc_extensions on を使用しても gcc
            形式の構造体メンバの初期化構文をglobal変数に対して使用した場合に
            コンパイルエラーが発生する
- MTWX19490 Thumbでのswitch case文で不正なジャンプ先アドレスが生成される場合
            がある
- MTWX19492 switch case文のdefaultに対して正しくない命令が生成される場合がある
- MTWX19507 組込み関数 __memcpy() のプロトタイプを標準関数の memcpy()と同じ
            にした
- MTWX19508 コマンドラインコンパイラが -help で表示する説明に、-opt のデフ
            ォルト値（speed/space）の記述が無かった
- MTWX19545 Thumbで最適化レベルが1以上の時に、"#pragma big_switch on" を指定
            した場合に、switch case文で正しくない分岐先アドレスが生成される
            場合があった
- MTWX19572 最適化レベル１以上の場合にコンパイラ内部エラーが発生する場合がある
- MTWX19573 MTWX19572と同根のコンパイラ内部エラー
- MTWX19574 リンカでのMULTIDEFバインディングのシンボルの扱いを変更した。
            これにより、メイン部分に同名シンボルがすでに存在する場合を除き、
            MULTIDEFバインディングの同名シンボルは、異なるオーバーレイのそれ
            ぞれの中に存在可能になった。
- MTWX19666 コマンドラインコンパイラで、-readonlystringsオプションについての
            ヘルプ表示が壊れていた
- MTWX19671 "Make string constants read-only" オプションが働かなかった
- MTWX19672 関数からのリターンとして生成するアセンブラ命令を、v5tの場合、
            bxを使用しない効率的な命令に改善した。
- MWGD48    Thumbの場合に、定数のアドレスが正しくロードされない
- MWGD60    (再修正) 次の問題への対応で、エラーでは無く警告を発生させていたの
            を修正した：
                MWGD60 コマンドラインとプリコンパイル済みヘッダでdefineの
                二重定義がされた場合に、コンパイラがエラーを表示しない
- MWGD60    コマンドラインとプリコンパイル済みヘッダでdefineの二重定義が
            された場合に、コンパイラがエラーを表示しない
- MWGD67    インラインアセンブラが、最適化レベルが２以上の場合に、０番地
            への分岐を生成する
- MWGD68    (再実装) Thumbモードで、巨大な switch-case文に対して、コン
            パイラが間違ったコードを生成する
- N/A       デッドストリップされたDWARF2 typedefエントリから参照される 
            DWARF2基本型のバグを修正
- MWGD71    「バックアップデバイス全体に特定の値を書き込みます」と「バック
            アップデバイス内容の一部書き換えます」の機能を"Backup Memory..."
            コマンドでサポートした。
- MWGD72    IDEのTCLコマンドウィンドウを使用しているとき、makeコマンドで発生
            したエラーの表示が得られない
- MWGD92    Thumbでビルドした場合、デバッガ起動直後にARM7が意図しない停止
            をする
- MWGD102   ウォッチポイントで監視対象としているメモリ領域を変更しない行で、
            デバッガが停止する
- MWGD114   1.2 Service Pack 2 デバッガのクラッシュ
- MWGD115   評価式ウィンドウや変数ウィンドウで構造体が展開表示されている場合、
            ステップオーバー操作でデバッガがクラッシュする
- MWGD116   評価式ウィンドウで構造体が展開表示されている場合、ステップ
            オーバー操作でデバッガがクラッシュする
- MWGD121   NITRO-SDK 3.0 形式のスレッドをデバッガでサポートした
- MWGD122   NITRO-SDK 3.0 形式のスレッドと同時にNITRO-SDK 2.x 形式のスレッドも、
            デバッガでサポートした
- MWGD142   "Backup Memory..." コマンドで、"DSサブカード 4M FLASH"と
            "DSサブカード 256K FRAM"をサポートした
- MWGD151   インストーラがRemote Debuggingパネルを変更してしまう


1.2 Service Pack 2 で修正された問題
===================================

  Number     Problem Addressed
  =========  =================
- MTWX12005  Thumbモードで、ldconstニーモニックがインラインアセンブラで未
             サポート
- MTWX17484  正しくない Thumb コード生成
- MTWX18724  最適化レベルが0なのに、インラインアセンブラ部分が最適化される
- MTWX18771  ターゲット設定パネルでリンカがNoneの場合に、プリリンカとポスト
             リンカが機能しない
- MTWX18864  インラインアセンブラで間違った無限ループが生成される
- MTWX18865  IDEの言語パーサーが、文字'e'で始まるパラメータを持つマクロの
             構文解析に、失敗する
- MTWX18885  オーバーレイを使用したプロジェクトでデバッガが例外を発生する
- MTWX18887  デバッガが正しくないオーバーレイのソースを表示する
- MTWX18906  キャッシュビューワの2つのツールバーアイコン、「キャッシュをディ
             セーブルする」と「キャッシュを無効にする」に対するTips文字列が、
             同一だった。（日本語版IDEのみ）
- MTWX18939  .volatile 指定のステートメントレベルインラインアセンブラのコード
             が最適化レベルの指定に影響される
- MTWX18973  .volatile 指定のステートメントレベルインラインアセンブラのコード
             が最適化レベルの指定に影響される（他のサンプル）
- MTWX18974  std::list<int>型の変数の代入文 "a = b;" に対して、警告 "expression
             has no side effect" が表示される
- MWGD16     最適化レベル2以上で不要な MUL 命令が生成される
- MWGD17     デバッガが間違った型で変数を表示する（コンパイラの問題）
- MWGD19     組込み関数 __memcpy()でコンパイラが内部エラーを起こす
- MWGD20     デバッグモードでおかしなコードが生成される
- MWGD25     社内用ARMNitroTegProtocol.dllを使用した場合に、「すべて終了」操作
             でIDEがクラッシュ
- MWGD68     Thumbモードで、巨大な switch-case文に対して、コンパイラが間違った
             コードを生成する
- MWGD70     バックアップデバイスダイアログで、バックアップデバイスの種類とし
             て「DSサブカード 512K EEPROM」を選択可能にする
- N/A        リンカが DWARF2 typedef エントリをデッドストリップしないように変
             更した


1.2 Service Pack 1 で修正された問題
===================================

  Number     Problem Addressed
  =========  =================
- MTWX18688  コマンドラインコンパイラのヘルプ表示に
             "-generic_symbol_names on | off" についての記述が無い
- MTWX18717  最適化レベルが１の場合にインラインアセンブラでクラッシュ
- MTWX18721  最適化レベルが２以上の場合に、.volatile疑似命令がインラインアセン
             ブラブロックの最適化を抑止しない
- MTWX18748  最適化レベル１以上で正しくないコードが生成される
- MTWX18580  Thumbでパラメータの引き渡しが不正
- MTWX18796  コンパイラのクラッシュ


1.2 で修正された問題
======================

  Number     Problem Addressed
  =========  =================
- MTWX13962  C99の指定初期化子(designated initializers)をコンパイルできない
- MTWX16452  予期しないARM7デバッガウィンドウが表示された後に例外が発生
- MTWX17051  IDEプロジェクトでFS_関数を使ってROMファイルを追加する方法がドキュ
             メントに無い
- MTWX17415  プラグマ options align でのキーワード指定に対してコンパイラが警告
             を表示しない
- MTWX17539  コンパイラに -w all オプションを指定しても、警告表示が全ては有効
             にはならない。
- MTWX17540  stdlib.hを使用するC++ソースに対してコンパイラが警告を発する
- MTWX17551  Ensata使用時に再起動コマンドが機能しない
- MTWX17561  再起動コマンドを使用すると以降のビルド時にエラーが発生する
- MTWX17562  再起動コマンドを使用すると出力バイナリファイルがロックされる
- MTWX17573  カード／カートリッジの抜き取りエミュレーション機能の追加
- MTWX17616  実行開始時に自動でカード／カートリッジスロットの電源をオンする機
             能の追加
- MTWX17648  ROM内登録データを表示する機能の追加
- MTWX17659  スタックポインタ値の事前変更なしでスタック先頭に値を保存するコー
             ドが生成されている
- MTWX17812  関数がconst配列のアドレスを返せない
- MTWX17942  ライブラリファイルからstaticシンボルを抜き取る機能の要望
- MTWX18015  NitroMakeRomPostlinkerパネルの"makerom tool defines"エディットボ
             ックスを編集するとゴミ文字が現れる
- MTWX18017  IS-NITRO-EMULATORを使用してThumbバイナリをデバッグできない
- MTWX18053  インラインアセンブラ部分のコード生成で最適化を無効にする機能の追加
- MTWX18139  Makerom postlinkerが makerom.exeからの終了コード1を検知できない
- MTWX18172  ELFファイルの.commentに、実際より古いコンパイラバージョンが書き出
             される
- MTWX18174  ステートメントレベルのインラインアセンブラでの最適化に関する説明
             をドキュメントに記載
- MTWX18187  デバッグ時、typedefした型を評価式として使用できない
- MTWX18198  例外エラー 0xc0000005 が IDE_MSL_DLL90_x86.dllで発生
- MTWX18199  バックアップカードアクセス時の2Mフラッシュのメーカーの自動認識機能
- MTWX18201  ワンタイムPROMへの対応
- MTWX18233  ロード時、デバッグ可能になるまでの時間を短縮してほしい
- MTWX18242  「ARM Debugger Settings」パネルの「Target Processor」で「Nitro」を
             指定することを推奨する記述をマニュアルに追加 
- MTWX18248  逆アセンブルでアプリケーションエラーが発生
- MTWX18262  SDKのFS_関数を使用してファイルをROMに置く方法を示すサンプルが欲しい
- MTWX18264  デバッガが Dwarf2Symbolics.DLL で例外エラーを発生
- MTWX18277  Thumbコードのデバッグができない
- MTWX18284  SDK demoで間違ったベニアが生成されている
- MTWX18346  オーバーレイを使用するアプリケーションのデバッグでIDEがクラッシュ
- MTWX18513  デバッガ関連の子ウィンドウを閉じるとIDEがクラッシュ
- MTWX18532  スタンドアロンアセンブラがGNU形式のローカルラベルで複数桁をサポート
             している事をターゲッティングマニュアルに記載
- MTWX18534  インラインアセンブラが、ステートメントレベルのアセンブラブロック
             中の１行をコンパイルしない
- MTWX18581  ThumbプログラムがNitroMainの先頭から先の命令に進めない
- MTWX18689  Makerom postlinkerの実行時のカレントディレクトリをマニュアルに記載
- MTWX18690  メニュー項目 "Flash..." と "Backup Memory..." が有効になる条件が
             変更された事をDeveloper Notesに記載してほしい
- MTWX18700  ステートメントレベルのインラインアセンブラでの最適化制御の機能を
             ターゲッティングマニュアルに記載
- MTWX18740  デバッガの逆アセンブラが命令モード(ARM/Thumb)を決定する方法について
             マニュアルに記載
- MTWX18790  外部カードスロットの電源をオンにした際のメッセージが正しくない



1.1で修正された問題
======================

  Number     Problem Addressed
  =========  =================
- MTWX13811  #pragma optimization_level に対する reset パラメータの記載が
             無かった
- MTWX14050  ビットフィールドのメンバへの書き込みで、不要なビットクリア命令
             が生成される
- MTWX14095  コマンドラインリンカがライブラリの検索パスを逆順に使用している
- MTWX15093  -overlaygroup を使用していて -overlayでファイルを指定しなかった
             場合に、エラーメッセージの意味が不明: Unexpected error in 
             CWAddProjectEntry[2]
- MTWX15440  日本語版IDEで、C/C++ LanguageパネルのInline Depthドロップダウン
             リストの "Don't Inline" が文字化けしている
- MTWX16203  実行またはデバッグ操作でのメモリーリーク
- MTWX16282  DS インストーラが環境変数 NITROSDK_ROOT を作成しない
- MTWX16489  日本語版IDEのメニュー項目名「ファイル内を検索」は実際の機能を
             表していない
- MTWX16730  日本語版IDEの「シンボル補間」は「シンボル補完」が正しい
- MTWX16746  メモリから値が読み込まれた場合にもウォッチポイントが反応する事
             が、ドキュメントに記載されていない
- MTWX16759  メモリウィンドウで表示形式を変更するとIDEが異常終了することが
             ある。:Dwarf2Symbolics.DLL
- MTWX16983  ロードされていないオーバーレイでのブレークポイントの対応
- MTWX17033  MSL内のstrcmp()とstrcpy()で、操作対象が0x80より大きいコードの文
             字を含む文字列だった場合に、最適化されたコードが使用されていない
- MTWX17064  フラッシュメモリへの書き込み
- MTWX17082  バックアップメモリのロードとセーブ
- MTWX17085  ARMPlugin.dll 2.0.0.5003を使用している場合に、プロファイラウィンド
             ウが開かない
- MTWX17184  プロジェクトファイルが日本語文字を含むディレクトリに置かれていた
             場合に、バイナリファイルを読み込むとデバッガがクラッシュする。
- MTWX17414  CodeWarriorで生成したELFファイルなのに、デバッグ時にデバッガが
             アセンブラソースファイルを表示できない
- MTWX17463  デバッグ時に評価式ウィンドウを閉じるとIDEがクラッシュする
- MTWX17508  デバッガのオートロードへの対応
- MTWX17540  stdlib.hをインクルードしているC++ソースをコンパイルすると警告が
             表示される
- MTWX17571  Thumbモードで最適化レベル4のとき、コンパイラが、ポインタアクセ
             スに対して間違ったストア命令を生成する
- MTWX17642  カード、カートリッジの電源をオンにした際のメッセージについて、
             表示する、しないを指定したい
- MTWX17644  IDE プロジェクトからの圧縮フォーマットサポート
- MTWX17646  ARM7 ソースファイルのファイル位置ダイアログの抑止
- MTWX17647  「ファイルの検索」ダイアログのコントロール機能
- MTWX17649  CodeWarrior プロジェクトでの SDK 固有オプション指定機能
- MTWX17650  ブレークポイントウィンドウを使用せずにウォッチポイントを指定する
             機能
- MTWX17682  mwasmarm.exe での GAS 互換ローカルラベルのサポート
- MTWX17686  LCF prelinker での LCF template ファイル指定機能
- MTWX17687  LCF prelinker での ITCM/DTCM アドレス指定機能
- MTWX17709  スタンドアロンアセンブラで str r2, value 構文がサポートされていない
- MTWX17742  特定のオブジェクトファイルを逆アセンブルするとアプリケーションエ
             ラーになる
- MTWX17755  マニュアルのプロファイラ example コードが間違っている
- MTWX17758  最適化レベル１以上でコンパイラがクラッシュする
- MTWX17829  スタンドアロンアセンブラが2つのラベル間の命令を生成しない
- MTWX17979  NitroMakeromPostlinker の "MakeRom Tool Defines" エディットボック
             ス編集中に予期しない改行が挿入される
