|
Last Updated 06-Mar-2008 |
|
2008年2月19日をもちまして「MS-DOS版」は販売を終了いたしました。 |
|
|
|
|
|
|
| LSI C-86はWindowsまたはUNIX上で動作するi8086のソフトウェア開発をサポートする16ビットCクロスコンパイラです。 |
|
|
■ |
ANSI標準規格に準拠したコンパイラ |
|
|
|
■ |
コンパイラが最適なレジスタ割り付けを実行 |
|
|
|
■ |
i8086の4つのメモリモデルをサポート |
|
|
|
■ |
リンカはMS-DOSで実行可能なEXEファイル、またはROM化可能なバイナリあるいは拡張インテルHEXファイルを生成 |
|
|
|
■ |
ターゲットシステムのメモリマップにあわせてオブジェクトを配置可能 |
|
|
|
■ |
ROM化のための初期設定モジュールおよび全ライブラリ関数のソース付き |
| 言語仕様 |
| ■ANSI標準規格に準拠したコンパイラ(多バイト文字 、<local.h> を除く) |
| ■サポートするデータ型 |
void |
char |
signed char |
int |
unsigned int |
||
short |
unsigned
short |
long |
unsigned
long |
float |
||
double |
long double |
struct |
union |
enum |
| ■プリプロセッサ文 |
#include |
#if |
#ifdef |
#elif |
#define |
||
#undef |
#line |
#pragma |
# |
## |
| ■プロトタイプ宣言 |
| パラメタの間違いを防ぐプロトタイプ宣言が可能です。 |
| コンパイラ |
|
| ■高速かつコンパクト | |||
| コンパイラがレジスタの最適な自動割り付けを行います。作成したプログラムの実行は高速、オブジェクトコードはコンパクトです。プログラマがregister宣言をあたえなくても、どの変数をレジスタに割り当てるべきかをコンパイラが自動的に判断します。従来のi8086用Cコンパイラはせいぜい2つか3つのレジスタしか割り当てられなかったのに対し、LSI C-86は使用されている変数をax,bx,cx,dx,si,diの6つのレジスタに可能なかぎり割り当てます。さらにLSI C-86は変数の生存期間を調べ、異なる変数に同じレジスタを割り当てることもやってのけます。したがって7つ以上の変数が使われている場合でも、全部レジスタで済ませてしまうこともあります。 | ||||
| ■パラメタの受け渡し | ||||
| 関数パラメタは可能なかぎり(最大4個)レジスタを使って渡します。そのため関数呼び出しのオーバーヘッドは非常に軽く、アセンブリ言語サブルーチンとのリンクも簡単に行えます。 | ||||
| ■アセンブリ・インライン関数 | ||||
|
アセンブリ言語をCのソースプログラム中に記述することができます。inp(ポート入力)のような関数は、Cプログラムの中にインライン展開することができ、効率が非常に良くなります。 ▼図1 ソースプログラム
▼生成されたコード
| ||||
|
■各種メモリモデルをサポート | ||||
| スモール(S)、プログラム(P)、データ(D)、ラージ(L)の4つのメモリモデルをサポートしています。さらにfar,nearキーワードをサポートしていますので、効率の悪いラージモデルを使わずに、スモールモデルのプログラムの中で大量のデータを使用することができます。 | ||||
| ■コンパイラドライバ | ||||
| 使いやすいコンパイラドライバを用意しています。ソースも含まれていますので、自由にカスタマイズすることができます。 |
| アセンブラ |
| アセンブラはi8086/i80186/i80286およびi8087/i80287の命令をサポートしています。また、ジャンプ命令を最適化する機能があります。通常の条件ジャンプ命令で分岐できるのは-128〜+127バイトの範囲ですが、この範囲外への条件ジャンプ命令は逆の条件のジャンプ+無条件ジャンプの2命令に自動的に変換します。同様に、無条件ジャンプ命令もできるだけ短い命令を生成します。 |
| リンカ |
| EXEファイルはもちろん、バイナリファイルあるいは拡張インテルHEXファイルを生成します。セグメントがロードされるべきアドレスを指定することによって、ターゲットシステムのメモリマップに柔軟に対応することができます。また、MS-LINKと同等のマップファイルを生成しますので、このファイルをICEなどで利用すればシンボリックデバッグが可能です。 |
| プロファイラ |
| プロファイラはプログラムの実行をモニタするためのツールです。これは計数型プロファイラで、プログラムのどの文を何回実行したかをカウントします。その結果、プログラムのどの部分が実行されたのかが一目瞭然となりますので、条件判定の論理のミスなどを容易に発見することができます。また、実行回数の多い関数を最適化すればプログラム全体の効率を上げることができますが、プロファイラはその指標をあたえてくれます。 |
| ライブラリ |
|
ANSI標準規格で定義された関数のうち、多バイト文字関数と<locale.h>を除く、すべての関数を用意しています。
さらにUNIXで用意されている関数や、MS-DOSとのインタフェース関数など、数多くの関数を用意しています。ライブラリ関数すべてのソースを公開しています。 ▼関数一覧表
|
| ROM化 |
| ROM化のための初期設定モジュールのソースが含まれています。これをターゲットシステム用に修正することによって、どのようなシステムにも対応することができます。また、アセンブラとのリンクが簡単に行え、割り込み処理もCで記述できます。さらに、オブジェクト効率がよく、ROMプログラムもほとんどCで記述できます。 |
| 性能 |
|
図1-a,bは、ベンチマークプログラムのソースとオブジェクトです。すべての変数がレジスタに割り当てられ、まだdiレジスタが余っていることにご注目ください。ソースの左端の数字はプロファイラによる実行回数です。 ▼図1-a ベンチマークプログラムのソースリスト
▼図1-b ベンチマークプログラムのオブジェクトコード
▼コンパイル処理の流れ
|
| ■LSI C-86 Ver.3.5動作環境 | ||||||||
| ||||||||
| *1:Windows Vistaでは日本語表示および日本語入力はできません。 ●CD-ROMドライブ必須 ●libcのバージョンは当社で確認したものです。 |
|
|
■LSI C-86 Ver.3.5一覧 | |||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| *2:基本パッケージ1本をご購入いただくと、商品別に追加ライセンスの購入ができます。追加ライセンスは追加1ライセンスをご用意しておりますので、ご使用になるコンピュータの台数に合わせて必要なライセンス数をご購入いただけます。 |
| ■商品構成 | ||
|
|
●コンパイラドライバ(lcc86) ●プリプロセッサ(cpp) ●コンパイラ(cf/cg86) ●アセンブラ(r86) ●リンカ(lld) ●ライブラリ ●ライブラリのソースコード(Cおよびアセンブリ言語) ●ROM化トレーニングプログラム ●UNIXライクなプログラム保守ツール(kmmake) ●lcc86,cpp,kmmakeなどツールのソースコード ●日本語マニュアル ●登録カード |
|
●LSI C-86 Ver.3.5の(Windowsパック)基本パッケージ、(Solarisパック)基本パッケージ、(FreeBSD/Linuxパック)基本パッケージは
、それぞれ別商品になりますので予めご了承ください。●本コンパイラを使用して作成されたプログラムの販売については、コンパイラ自身をその中に含んでいない限りロイヤリティ(使用料)は一切不要です。 LSI Cはエル・エス・アイ ジャパン株式会社の登録商標です。そのほか、商品名は一般に各開発メーカーの登録商標または商標です。 |
|
|
安全に関するご注意 |
ご使用の際は商品添付の説明書をよくお読みのうえ、正しくお使いください。 |
|
|
| |
|
|
| |
|
〒151-0051
東京都渋谷区千駄ヶ谷1丁目8番14号 |
| 販売代理店はこちら |