S12/XGATE
CosmicのクロスコンパイラHCS12XはFreescale社のHCS12Xシリーズをすべてサポートします。
(S12XA, S12XB, S12XD, S12XE, S12XF, S12XHZ, S12XS, S12G, S12P, S12HA , S12HYシリーズ)
- ANSI/ISOに準拠したCで記述
- HCS12X周辺機器のためにヘッダーファイルもサポート
- HCS12XコンパイラはXGATEのコプロセッサ用に拡張することが可能です。
具体的な特徴
- 実行時支援パッケージ
- CのルーティンサポートはANSIのサブセットで構成されているのでライブラリのルーティンを自由に変更可能
- すべてのルーティンライブラリはROM化が可能でリエントラント
- →整数のみのライブラリと単精度及び倍精度浮動小数点のライブラリの中から選べるので必要がなければより高速な整数のみのライブラリを選択することが可能
- 最適化
- 頻繁に使うスタティックなデータは@dirを使うことで直接ページメモリに配置することが可能です。
- コンパイラは整数型への拡張を無効にすることができるので、型が8bitなら文字列での演算が可能になります。
- コンパイラは最初の引数を関数に渡してレジスタ内に変数を返します。
- 文字列型の引数は拡張されることなく関数に渡されます。
- 非常に効率的な小数点演算をサポートします。
- 他には以下の最適化があります。
- 岐路短縮ロジック
- 局所分岐の削除
- 定数の畳み込み
- 到達不能コードの除去
- 冗長な負荷/記憶の削除
- switch文の最適化
- 拡張機能
- 拡張的な以下のようなコードが用意されています
- asm()・・・Cコード内にアセンブリコード直接挿入
- @far・・・C関数に付属させて宣言することでバンク切り替えが可能
- @gpage・・・64kまでのグローバル定数を定義
- @eeprom・・・EEPROMに置くデータをコンパイラに認識させる
- @interrupt・・・C関数/オブジェクトを割り込みハンドラとして定義
- @〈adress〉・・・C関数/オブジェクトを絶対的アドレスとして定義
- 拡張的な以下のようなコードが用意されています
- コンパイラの付属的な特徴
- Cおよびアセンブリのソースレベルでデバッグが可能
- コンパイルによって絶対的で再配置可能なリストを出力
- エラー診断
- 素早いコンパイルとアセンブル
- ファイルパス、オブジェクトの配置、エラーファイルのリスト化はすべてユーザーコントロール
- すべてのオブジェクトはホストコンピュータに依存しない
- 関数コードとスイッチテーブルは(.text)コードのセクションに生成
- 文字列や定数データは(.const)コードのセクションに生成
- 初期化されたスタティックデータは他のデータと区別されます
- 関数は共有され、ROMに配置されます。デフォルトによって自動的に修正されることはありません。
- コードはSAL(記号アセンブリ言語)ファイルとして生成されるのでコンパイラの出力をテストすることが出来ます。
- 大きなソースコードに対応するため、ヒープ(短期記憶領域)にテーブルをリアルタイムに作成
- 文字列操作ルーティンは高速の実行するためにアセンブリ言語で実装されています。
- デバッグサポート
- Cosmicは完全なCソースレベルでのデバッグが可能です。詳しくはこちら
- ELF/DWARFまたはP&Eマップファイを含むデバッグフォーマットもサポートしています。
- 対応機種
HostPC Product code
PC (DOS/Windows) CXS12X-PC
PC Linux CXS12X-LINUX
SUN SPARC (SunOS/Solaris) CXS12X-SUN
HP9000(HPUX) CXS12X-HP