改版履歴

1.0   1999/08/23
初版
1.01   1999/08/25
register キーワードと /or の併用で起こる障害を修正
コメントなどを微調整
1.02   1999/09/01
float 型の関数引数と戻り値に対応
オプション -segfv を追加
1.03   1999/09/08
_asm を追加し、複数行のインライン アセンブラ ブロックをサポート
_macro を追加し、インライン アセンブラのマクロをサポート
1.04   1999/09/16
割り込みハンドラの記述用に interrupt キーワードを追加
cpu.h を追加し、peekw、pokew、inportw、outportw、int86、intdos、set_vector などの各種低水準関数をサポート
インライン アセンブラで複数の同名局所変数も簡単に使用できるように変更
1.04A   1999/09/17
_macro の引数に #define 定義名を書けるように変更
#include のパラメータに #define 定義名を書けるように修正
_setfcw() を追加
1.05   1999/09/29
割り込みハンドラの記述用に interrupt キーワードを追加
cpu.h を追加し、peekw、pokew、inportw、outportw、int86、intdos、set_vector などの各種低水準関数をサポート
1.05A   1999/09/30
continue 文があると無限ループに陥る障害を修正
1.06   1999/09/30
体験版で small モデルを制限なく使用できるように変更
1.06A   1999/10/22
atof() を追加
? : 演算子に float 型の値を渡したとき、結果が double に昇格変換されないように変更
1.06B   1999/10/30
広域変数の初期値または配列要素の初期値として関数アドレスを参照したとき、アセンブラ コードにその関数名を定義する extrn 命令が出力されない現象を修正
1.1   1999/11/10
デバッグ情報の形式を変更。デバッグ モードを使用する場合、Light C 1.1 以降、LASM 2.2 以降、および LIL 2.2 以降をそれぞれの過去のバージョンと組み合わせて使用することはできません。
void 関数から値を返そうとするコードを警告
1.11   1999/11/19
interrupt 関数の前後で自動的に全レジスタをプッシュ/ポップするように修正
1.12   1999/11/24
#define 名を _asm 内でも使用できるように拡張
複数命令を持つ _asm を #define の値として定義できるように拡張
1.13   1999/11/26
「-segc:<seg>:」により「クラス名なし」を指定できるように拡張
無名の enum (enum { a, b, c }; など) に対応
要素数を明示しない extern 配列 (extern short a[]; など) に対応
同一名に対する struct と union の指定矛盾を検出するように修正
1.13A   1999/12/02
構文「(int)sizeof(n)」を「(int)(sizeof(n))」と書かなくてもよいように変更
1.13B   1999/12/06
-zah を使用できるように修正
ビット フィールドのデバッグ情報をサポート
レジスタ変数のデバッグ情報をサポート
1.13C   1999/12/29
数個以上の広域変数があるとデバッグ モードでリンクできない問題を修正
体験版の制限を変更
1.2   2000/08/04
「a = ! b」をコンパイルできない問題を修正
_asm を関数外にも書けるように強化
配列の初期化リストを「,」で終えられるように強化 (例:int a[] = {1,2,3,};)
デバッグ情報ファイルの PROC レコードに ZA、ZC、ZL の 3 フィールドを追加
1.23   2000/12/04
const 配列をポインタに代入したり、関数の引数として渡せない問題を修正
far 関数を 2 つ以上続けて定義したとき、2 番目以降の関数で es レジスタが初期化されない場合がある問題を修正
大きな switch 文でジャンプテーブルを使用するか指定するオプション -sjt を追加
switch 文のジャンプテーブルが変更可能データ用の dseg ではなく定数用の kseg に生成されるように変更
LIL 2.36   2001/01/31
マップ ファイルの「オブジェクト ファイル別のセグメント始点」に長さ表示を追加。長さ 0 のセグメントを表示しないように変更。
1.24   2001/02/26
ANSI C 規格テストの結果に対応した各種の修正
1.25   2001/02/27
-segfn、-segfc オプションを追加
1.31   2001/10/15
ANSI 互換性テストの結果による各種修正
1.32   2002/01/08
コード セグメントを para アラインにするオプション -csp を追加
1.33   2002/01/10
代入先のポインタの後置インクリメントでポインタが 2 つ進む障害を修正
1.34   2002/01/16
文字型の関数引数にシフト演算式を渡したときの障害を修正
1.36   2002/01/16
他ブロックのラベルに goto で移動できるように変更 → func() { { L:; } goto L; } のようなコードをコンパイルできるようになりました
2 回目以降の fgetc( stdin ) がすぐに返ってきてしまう問題を修正
1.38   2002/04/16
局所変数に SS レジスタでアクセスするオプション -lss を追加
1.39   2002/06/20
次のコードが正しくコンパイルされるように修正
1.41A   2004/04/08
[float 変数] = (float)([整数] - [整数]) の計算について、各整数を float に変換してから減算するのではなく、整数同士の減算を行ってから float に変換するように修正
1.42   2004/06/21
関数引数の扱いを決めるキーワード cdecl_r、syscall_r、stdcall_r、pascal_r を追加。各キーワードの意味は次のとおりです。

修飾子"_" の付加引数がスタックに積まれる順序スタックから引数を除去する側
(なし)あり後から呼び出された側
syscallなし後から呼び出された側
stdcallあり前から呼び出した側
pascalなし前から呼び出した側
cdecl_rあり後から呼び出した側
syscall_rなし後から呼び出した側
stdcall_rあり前から呼び出された側
pascal_rなし前から呼び出された側

ヘルプの「関数呼び出し規約」も参照してください。

(1.42)   2006/07/31
オンライン ヘルプ Web 版を作成し、https://www.tamasoft.co.jp/lc/hlp/ で公開しました。
オンライン ヘルプ CHM 版もここからダウンロードできます。
1.42C   2007/02/17
unsigned int または unsigned long を float または double に変換したとき、signed として変換される問題を修正
LIL 2.41   2007/03/02
SYMDEB 形式のシンボルファイルを出力するオプション -msym を追加
lcasm   2007/06/26
変数の初期化子に共有変数と外部変数 (extern) への参照を共に使用したとき、不正な参照アドレスが設定されてる問題を修正 (アセンブラの問題)
1.42D   2007/10/16
「(int)0x8000 >> 1」のように int 型の定数を右シフトしたとき、最上位ビットが 0 になる現象を修正
1.42E   2010/06/30
-lss 指定時に double など大サイズ値の受け渡しが正しくない問題を修正
1.42F   2012/03/09
文字列の最後に第二バイトが 0x5C になる全角文字 ("ソ" など) があるとエラーが発生する問題を修正