lcc-win32 Oct-3-1997 at 1997/Dec/2〜7 1. New version   lcc-win32の(あたしの知る限り)3度目のReleaseである。早速落としてみた。  意外な(?)ことにlcc-win32の非公式サポートページの方は更新されていないようで、  minimalのページからのリンク先(http://207.33.3.10/lcc-win32/)だけ更新されて  いる。  さて。ダウンロードファイルだが: このページにはどれが更新されたのか書いてない! 結局、次が更新されていた。 copyright 4KB 更新 readme 9KB 更新 lcc-win32.zip 1,630KB 更新 lccwin32_doc.zip 141KB 前回とfcしたら同じだった mmx.zip 9KB 前回とfcしたら同じだった weditだけのパッケージ(落としていない) lcc-win32.zipにもweditは同梱  readmeのWhat's newによれば、改良点は次の如し:   1. 64 bit intのサポート。ただし問題があるかもしれない   2. 最適化の小改良。switchの速度をかなり高速化   3. lburg (デバッガ)の高速化   4. bug fix   5. buildlibがライブラリ作成時の別名(alias)をサポートした   6. pedumpは.edataセクション内でエキスポートされている関数を見付けられる   7. signalの処理が動かなかったのを修正   8. リンカの致命的バグを修正   9. weditのデバッガは作り直した。より良くはなっているがbugが残っている 2. パッケージの検証   lcc-win32.zipの展開結果をざっと比較してみた。 ・lburg.exe...タイムスタンプが97/09/06 23:17で前と同じ!?あれ? ・pedump.exe...これも同じタイムスタンプ、97/08/28 9:37? ・src\*.*...むぅ。殆ど97/11/11 23:52だ。touchしたな... ・demo\*...内容がやっぱりreadmeと多少違うが愛嬌かしらん?... ・pedumpのソースはreadmeにはあると書いてないけど、実際はあるぞ? ・前回のlccも今回のもlcc 3.5であるとreadmeに書いてあるようだ。  その辺りで(What's newが)混乱したのだろうか? 3. 再構築   私にとっていらないものを消し、必要なものを旧lccのディレクトリからコピーし、  また変更する。  ・Phase 1   自分用のバージンインストールパッケージの作成。方針は次の通り:   ・展開したlcc-win32ディレクトリの移動と統合   ・自分に必要のないファイル類の削除   ・可能なら.lzhにした時に1.44MB未満(FD 1枚で可搬にしたいため)  1. lhasa(*1)で展開するとlcc-win32\lccpubというディレクトリの下に全     ディレクトリを展開するので、全ファイルを1レベル上に移動する。     lhasaのオプションとして特定のフォルダ下にアーカイバ名でサブ     ディレクトリを掘る指定をしてあるのでこれは当方の設定の問題。     そして不必要に深いディレクトリを嫌う当方の趣味の問題でもある    2. 削除ディレクトリ: driver\ ; ccコンパチなlcc compilerドライバのソース。私には無用。  weditを使うか、それよりmakeを直接使うのが好みなので demo\hello\ :  こんなのはcopy con foobar.cで書ける。基本である demo\hellowin\ :  Windwos版helloである。空ではちょっと書けないけど、  必要はない。もっとややこいことをあたしはやってるもん demo\intrinsic\ :  lcc依存な高度機能は使うつもりがないので…… demo\simple\ :  SDKのGenericを単純化したアプリだが、あたいには不要 lburg\ : デバッガのソースだけどさ、取りあえず削除 make\ : 今更makeを作りたいとは思わないので、ソースは削除。lccの  makeはnmake互換だそうだが、mkmf.batを作った私の感触としては  lccのmakeはgccのmakeにより似ている。nmakeの挙動は何か変な  所がある気がする pedump\ : MFC付属なdumpbinと同等なツールなのだが、取りあえず今は      ソースを見たいとは思わない。削除 buildlib\ :  ライブラリ作成用途の*.expの集合。多分、必要ないと判断して  削除。lccの作者はフランス人。わたしは日本人だし。   3. 存続。追加ディレクトリ・追加ファイル     demo\ddraw\wormhole\ : (存続)  Direct Drawはやるつもりもないのだが、やったことないので  残す demo\toolbar\ : (存続)  まぁ、その。やったことあるけど、何となく残す demo\dll\ : (追加、旧lccパッケージより)  lccで.dllを作る時のために…… env.bat : (追加)  lcc-win32を使うに辺り、コマンドラインからのmakeの実行を  可能とするための定義。当方の場合、gcc環境がdefaultなので、  gcc実行に必要な環境変数の削除とSDKのrcが必要とする環境変数  の定義、つまりset include=c:\mstools\include。それと後は  Pathにlccのbinディレクトリが含まれるようにするのみ。  実は同一内容のバッチがC:\DOS下にenvlcc.batの名である。  つまりenv.batは私の環境下では絶対に実行されない。  しかし、lcc以下のディレクトリ内容をlzhすればlcc-win32な  環境が移植可能である。少なくとも必須ファイルはあるという  保証を確実にするためにこのファイルは移動された  注:あっしが作ったものなので、lccのパッケージ内にはないよ lcc-man.txt : (移動)  昔まとめたlcc-win32の簡易マニュアル。必要最低限を抜粋した  もの setuplcc.exe: (存続)  初めてlccを使用する時にレジストリにlccを登録するツール。  前からlccを使用している当方には全く無用なのだが、  バージンマシンにlccを登録する際には必ず必要なものなので  残した bin\mkmf.bat: (追加)  weditが作るmakefileは各種*.exeを絶対パスで記述する。  そもそもそれが嫌いなので作ったmkmf。移動。  ・Phase 2 各種ファイルの修正:   Includeファイルの調整: ・memory.h 新版では存在する。よしよし ・windows.h う〜ん。前と同様、#include を最後に追加 ・share.h あ?新版ではこのファイルが追加されてる。何だろ? ・win.h う〜む。こいつはでかいからfcして……。 #define HKEY_USERS ((HKEY)0x80000003) #define HKEY_PERFORMANCE_DATA ((HKEY)0x80000004) #define HKEY_CURRENT_CONFIG ((HKEY) 0x80000005) #define HKEY_DYN_DATA ((HKEY) 0x80000006) //#define HKEY_USERS (HKEY)(-2147483645) //#define HKEY_PERFORMANCE_DATA (HKEY)(-2147483644) //#define HKEY_CURRENT_CONFIG (HKEY)(-2147483643)  つまり、3行削除して4行追加。ま、良いけど。「こうじゃないの?」って  出したあたしのメールが届かなかったかのか、あたしの英文が下手過ぎて  相手に理解されなかったかのどっちかなのね(;_;)  『また日本から変なメールが来た』とか思われても日仏友好に影響  するんで(大げさ)、ローカルで変更する(-xxな定義でも動くだろうが、  基本的にunsignedな数値を'-'な数で定義するというのは居心地悪いので)。  しかし、win.h、結構変更あるなぁ。IExxとかに対応でもしたのか?(爆)   SRCディレクトリ: ・lex.c ありゃ?コメントがShift-KISのままだ。しくしく。 KoreanではなくてJapanなんだけどなぁ……。 それによく考えたらこれってbugってるか?ここは私が mailしたんで責任重大だが……。 で、再コンパイル。うぅ。サイズが違う。 元々のlcc.exe 371,744 英語版 374,816 ; 単にmake -DJAPANした奴 375,328 ; makefileに追記してmake 単にmakeすればlcc.exeができるってドキュメントにあるのになぁ……。 (間違っちゃいない。確かにlcc.exeはできるし、全く同じものができるとは ドキュメントにも書いてない。しかし……) *.hに細工した後でコンパイルしたから自業自得か? …う〜む。オリジナルのアーカイブを展開して試しても一致しないぞ。 結局 374,816 ; 展開直後にmake で、これでできたlcc.exeを上で示した同じサイズのlcc.exeと比較しても 一致しない……? 大概酔っぱらってやってるのでどっか間違ってるかも? まぁ良いや。動けば(ぉぃ!) という訳で-DJAPANしたlcc.exeをlcc\binに入れてlcc\srcを消す。 これでどーだ!1.44MB未満の*.lzhになるか!? う〜む。1.5MBになっちまった。いかん! まぁ、展開後で7MBな奴がそこまで縮まったのだから誉めても良いの だけどさ。 っと、lccorg.exe (元のlcc.exeをrenameした奴)を消せばOK。見事 .lzhは2HD 1枚に納まるではないか! めでたしめでたし。 4. テスト 以前、比較のためにgen.exeってのを作ったはずだが、ソースはどこや? う〜ん。サイズは前のlcc.exeの結果と全く同じでんなぁ。fcすると結構違うん だけど。stripした後のサイズまで全く同じ。まいっか。 .exeサイズの減少を期待してたんだけどな。 で、最近見付けたlccのバグはと言えば、きっちり直っている(ちぇっ[笑])。 __argvの扱いが変だった、というのだが、このバージョンでは問題なし。 (ありゃ?bugってるんでないかい!?と思ったらこの新バージョンがupされ てて、新バージョンでは問題なかったってこと) (*1) 単一の*.exeだけで.lzhと.zipを展開してくれるツール。Installが容易で    FreeWareなので重宝している(作者に感謝!)。    LFN (Long file name)もサポートしていてとても嬉しい。当方、圧縮には    lha.exe V2.54 (要するに古いlha、V2.13でも展開可能な*.lzhをデフォルトで    作る多分最後のバージョン)をDOS窓で使用してるのです。    …英語MS-DOS V3.2上で無理矢理3太郎を使っていた経験(トラウマ?)がある    ので、個人的には日本語ファイル名を無意識に避けるし、8.3名を越える    ようなモノには抵抗があり過ぎるのであった(^^;;    そうそう、「表計算.txt」とか「蜥蜴.txt」って...(いかん、昔話は止め    ようね) (EOF)