ln れ川 a ⅱ行 m m 川計 Ma れ門 ライフボート Lattice C C-TOOL/98 WATCOM C / 386 Q Fig. 1 の MAKE ファイルは , ru n. Obj しか作成されません。 run. 0b j と runl. obj の両方を作成するには どうすればいいでしようか。 A LMK は ,MAKE ファイルの最 初にあるターゲットファイルを作 成することを目標とします。その ファイルを作るために必要なファ イルを作成する手順として , その 先のルールを解釈していきます。 お送りいただいた MAKE ファイル て、は , \ objYrun. obj を作成するこ とが , この MAKE ファイルの目標 になります。 Fig. 2 のような 1 行を ファイル依存性を記述する文の最 初に現れるように入れておくと , 〃の右のすべてのファイルを 作成します。したがって , run. obj と runl. 。 bj の両方を作成する MA KE ファイルは Fig. 3 のようになり ます。 Q C ー TOOL / 98 と Lattice C を使 って ,List 1 のプログラムを作成し ましたが , PC ー 9801RA と PC-H98m 0de70 で動作が異なります。 C-TO OL / 98 は , PC ー H98 に対応していな いのでしようか ? A g ka ⅶ関数は LI() を呼び出し て実行しています。 LIO 使用中にハ ードウェアに直接アクセスした場 合 , その後の LIO の動作が不安定に なります。画面切り換えルーチン gr bank は , List 2 のように g scr な een 関数を使用してください お , PC-9801RA と PC-H98 とて、動 作が異なるのは , LIO 内部のルーチ ンが変史になっているためと思わ れます。 ンを使用します。 ィレクトリの指定には , i オプショ に限定されるヘッダファイルのデ 定のプログラミングプロジェクト のディレクトリを指定します。特 UDE には標準の C のヘッダファイル い分けを行います。環境変数 INCL み合わせて , ヘッダファイルの使 通常は , このふたつの方法を組 5 のように指定します。 i オプションを使用する場合は Fig. ルを指定するもうひとつの方法 , ります。標準インクルードファイ ファイルを見つけられるようにな 86 コンパイラは標準インクルード の行を加えると , WATCOMC/3 AUTOEXEC. BAT の中に Fig. 4 る最も簡単な方法て、す。たとえば , クルードファイルの位置を指定す 環境変数を使用する方法がイン ションを使用する ・ WCC386 および WCL386 の i オプ ・環境変数 INCLUDE を使用する せる方法はふたつあります。 標準ヘッダファイルの位置を知ら WATCOM C / 386 コンパイラに す。 レクトリ YwatcomYh にあるはずて、 トリにあります。おそらく , ディ ストールされているサプディレク ATCOMC / 386 コンパイラがイン A 標準ッダファイルは通常 w どうしてですか。 あるので , stdio. h はあるのですが l.exe を使って , インストールして ます。 WATCOM C / 386 は , instal 見つかりませんというエラーがで WATCOM C / 386 で , stdio. h が Q Fig. 1 「 un. obj しか作成されない MAKE ファイル . c. Obj ・ に -ml -gs -v -t -D -k2 -e -cc ー 0 Obj% $ * \ obj*run. obj : \ c*run. c \ obj*runl . obj : \ c*runl . c Fig. 2 Fig. 1 に付け加える行 all : \ obj*run. obj \ obj*runl . obj Fig. 3 run. obj と runl. obj を作成する MAKE ファイル . c. 0bj ・ -ml -gs -v -t -D -k2 -e -cc ー 0 Obj* $ * Fig. 4 環境変数 include に指定する方法 \ obj*runl . obj : \ c*runl . c \ obj*run. obj : \ c*run. c all : \ obj*run. obj \ obj*runl . obj List 1 サンプルプログラム Wd386 -ic : *watcom*h myfile. c または , WCC386 myfile. c -ic : *watcom*h Fig. 5 ー i オプションを使用する方法 set include=a : *watcom*h outp(Oxa6, active) ; outp(0xa4,display); VOid gr bank(int active, int display) 1 : #include ” Ct001. h ” 2 : 4 : 5 : 6 : 10 : 11 : 12 : 13 : 14 : 15 : 17 : 18 : 19 : 20 : return ; 8 : main() g-init(); g_screen(), 0 , 0 , 1 ) ; g—print(10, getch() ; gr—bank ( 1 , g—print(10, getch() ; gr&nk ( 0 , g—print(10, getch() ; g-term ( ) ; 10 , ”テスト表示” ) ; 30 , ”テスト表示 " ) ; 50 , " テスト表示 " ) ; の ; 1 ) ; g-screen 関数を使用 1 : void gr bank(int active, int display) List 2 3 : 4 : g_screen(-l, ー 1 , active, display - return; : 17 ) ; lnformation from compiler Makers 159
速報 WATCOM C / 386 ver 8.5 山口誠之 株凵 FEBOAT から i80386 / 486 専用 C コンバイラ WATCOM C / 386 か発売された。この WATCOM C / 386 を使用することに より 32 ビットネイテイプモードプログラミングが可能になるのは もちろん , コンバイラ自身か 32 ビットネイテイプモードに移植さ れているため , 強力な最適化が実現できる。さらに Mic 「 osoft C コンバイラとのライプラリ・ソースレベルでの互換性も注目され る。現在 WATCOM C / 386 かサポートしている DOS 工クステ ンダ。「 DOS / 4G 」と併せて , そのアウトラインを紹介する。 はじめに ・最適レジスタ割り当てと命令のフロー解 ・ AN 標準規格を完全にサポート での互換性 ・ MS - C とのライプラリおよびソースレベル リをフルに使用 ・ 640K バイトの壁を超え , プロテクトメモ 特徴としては , 386 / 80486 専用 32 ビットコンパイラて、ある。 ート社が日本語版を移植・販売している 80 WATCOM Systems 社が開発し , ライフポ WATCOM C / 386 ver 8.5 は , カナダの ・リエントラントな生成コード ・ 80387 コプロセッササポート 析による強力なオプチマイズ OS/4G" を紹介し , 加えてパフォーマンス な点 , 本コンパイラ用 DOS 工クステンダ、、 D ックし , ほかのコンパイラと比べて特徴的 オーバビューの後 , 上記のポイントをチェ などがうたわれている。本稿ては , 簡単な (Fig. 1 ) 。量的にかなり充実しており , 内容 もわかりやすくまとまっている。また製本 や索引がしつかりしているのて、引きやすい マニュアルて、ある。 インストール ディスクは 2 枚て、 , ほとんどのファイルが 圧縮されて収められている ( 拡張子が . wpk のもの ) 。これらのファイルはインストール 時に自動的に展開されるが , ディスク # 1 に 付属の圧縮 / 展開ツール (wpack. exe) を使用 して展開することもて、きる。インストール は付属の install. exe て、行う。コマンドライン から , instal@ と入力すると対話的にインストールが行え る。ドキュメントには載っていないが install く source-disk > く dest-directory > と展開するディレクトリを指定することも 可能て、ある。 install. exe を用いてインストールすると , 約 3M バイトのディスク容量を消費する。途 中て、インストール先のディスク容量が足り なくなったような場合て、も , 再度 install. ex のテストを行う。 マニュアル 40 C MAGAZINE 1 2 7 マニュアルは B5 判て , Fig. 1 WATCOM C / 386 ver 8.5 のマニュアル ・ WATCOM C Language Reference WATCOM C 言語の解説 ( 269 ページ ) ・ WATCOM C Library Reference ライプラリ関数の解説 ( 496 ページ ) ・ WATCOM C / 386 Optimizing CompiIer and TooIs User' s Guide コンノヾイラとツール群の解説 ( 250 ページ ) ・ WATCOM LINKER user' s Guide リンカの解説 ( 252 ページ ) ・ WATCOM C / 386 Dos Programming Guide fo 「 32-bit Applications プログラミングのガイドと DOS / 4G の解説 ( 70 ページ ) 5 冊付属している
e を実行すると , すて、に存在するファイルを スキップし必要なものだけ展開してくれる。 コンノヾイル 環境変数 コンパイラを使用するには , 環境変数 inc lude , watcom にインクルードファイル , ラ イプラリのパスを指定し , コンパイラドラ イバなど実行ファイルがあるディレクトリ を PATH に加えておく。例えば , a:ywat com の下にインストールした場合 , 環境変数 は , Fig. 2 のようになる。 いつも決まって使うオプションがある場 合は , 環境変数 WCL386 に登録しておけば , コン / ヾイラドライノヾ Wd386 のデフォルトの 起動オプションになる (Fig. 2 ) 。ただし , のオプションは , Wd386 を使う場合にのみ 有効て、 , 直接コンパイラ wcc386' WCC386P を起動するときには無視されるのて、注意す コンバイラ パッケージに含まれるおもな実行ファイ ルを Table. 1 に示した。 Wd386 のオプショ ンにより , リアルモードコンパイラとプロ テクトモードコンパイラのどちらを用いる かを選択て、きる。 640K バイトのメインメモリ内て、は最適化 が中途半端に終わったりするような場合て、 も , 十分なプロテクトメモリがあればオン TabIe 1 WATCOM C / 386 ve 「 8.5 に含まれるおもな実行ファイル ファイル名 wdisam. exe wli b. exe wmake. exe womp. exe Wd386. exe wcc386p. exe wcc386. exe wlinkp. exe 386wcgl.exe 内容 引 N ティレクトリ内 386 ネイテイプモードコンバイラ リアルモードコンバイラ 386 ネイテイプモードリンカ コードオプティマイサ 田 NB ティレクトリ内 オプジェクト逆アセンプラ ライプラリアン MAKE ユーティリティ オプジェクトフォーマット変換ツール コンノヾイラドライバ メモリて、高速にコンノヾイルが行える。 2 , 3 のソースて、試してみたところ , 小規模なプ ログラムて、もスヒ。ードアップの効果はある ようだ。 オプションスイッチ コンパイラドライバ Wd386 のオプション スイッチは , デフォルトて、は , / e20 /fpi /mf /wl /3r /ze /zdp /zpl / Zt32767 て、ある。デフォルトて、 / 3r ( 引数をレジスタて、 渡す ) になっているのが目を引く。変わった ところて、は , 漢字などの 2 バイト文字サポー トに関するオプション / zk て、 , /zk0 日本の漢字 /zkl 中国 / 台湾の漢字 / 、ングル /zk2 と指定がてきる。オプションスイッチの一 覧は付録ディスク収録 (OPT. TXT)0 Fig. 2 環境変数の例 SET include:a : *watcom*h SET watcom:a . *watcom*. ・・・インクルードファイルのティレクトリ ・・・ WATCOM リンカにライプラリのティレクトリを教える PATH:a : %watcom*bin : a : *watcom*binb , ・・・テフォルトで使用するオプションを指定 SET WCL386:/l=dos4g /P /fpc /j /zkO DOS 工クステンダ 速報 WATCOM C / 386 ver 8.5 41 クステンダてある。 2HD ディスク 4 枚組て , し , ライフポート社が販売している DOS 工 DOS/4G は , Rational Systems 社が開発 DOS/4G れるかもしれない 外の DOS 工クステンダも正式にサポートさ OM C / 386 ver 9. X 以降て、は , DOS/4G 以 RLAP" をつけてコンパイルする。 WATC この場合は , オプションとしてソト PHA 京都マイクロコンピュータの EXE386 Phar Lap Software の RUN386 いてもオプジェクトが動作する。 外だが , 次にあげる DOS 工クステンダにお exe ファイル ) 。また , 現在はメーカーの保証 ( 後述の DOS / 4G 内蔵形式のスタンドアロン 4G を DOS 工クステンダとして使用している WATCOM C / 386 のシステム自身は DOS/ Wd386 f00. c /I=dos4g ておかなければならない は , オプションとして "/I=DOS4G" をつけ クステンダが必要て、ある。コンパイル時に ational Systems 社の DOS/4G という DOS 工 実行て、きない。プログラムの実行には , R 作成した実行ファイルは , そのままては
リンカ (GLU32) , デバッガ (Instant-D32) , そのほかユーティリティ , GAWK, XLIS P, SED などが付属している。 DOS4G. EXE を実行するためには , 環境変 数 DOS16M に使用マシンとメモリ状態を記 述する必要がある。たとえば , PC ー 9801 シリ ーズの場合 Fig. 3 のようになる。この環境変 数を変えることにより , ほかの日本製の機 種 ( 富士通 FM R ー 70 , 日立 B32 , 沖電気 i f800 ) にも対応させられる ( 本稿筆中の ' 92 年 4 月の段階て、は未対応 ) 。 対応コンバイラ DOS/4G は , WATCOM C / 386 ver 8.5 のほかに HighC386 ver 1.7 と 2.3 にも対応 している。 WATCOMC の場合には , 上記 のセッティングをすればデフォルトて、 DOS / 4G 用オプジェクトが生成される。 HighC386 の場合には , Fig. 4 のようなオ プションをつけてコンパイル / リンクを行 う。ここて、用いた g1u32 は DOS / 4G に付属の リンカて、ある。ただし , リンクするライプ ラリに PC ー 9801 用 HighC386 に付属のものを 使用すると , なぜか生成されるオプジェク トは実行てきない ( 本稿て、は直輸入の HighC 386 ライプラリを使用した ) 。 スタンドアロン exe ファイルの作成 WATCOM C / 386 あるいは High C386 コ ンパイラにより作成した exe ファイルは , 上 記のように実行時に DOS4G. EXE が必要だ が , ユーティリティ splice4g. exe を用いて D OS4G. EXE を組み込むことにより , スタン ドアロンて、実行て、きる exe ファイルを作成す ることがて、きる。より簡単には , COPY コマ ンドのバイナリモード結合て、 DOS4 / G とア プリケーションを結合しても同じ出力が得 42 C M AGAZI N E VMM られるようだ。 1992 7 仮想メモリマネージャ ( VMM ) が別売オプ Fig. 3 DOS 工クステンダの環境変数 ET DOS16M = 1 @0 ー 4M プロテクトメモリ ( 0 ー 4M バイト ) PC ー 9801 シリーズ Fig. 4 DOS/4G 上 CHigh C386 を使用する場合 A : > hC386 -c -Hon=os2 obj f00. c A : > g ⅳ 32 -format lin f00. obj a : /hc/dos4g/hce.Iib a : /hC/dos4g/na.lib Fig. 5 バナー表示 >DOS/4GW P 「 otected Mode Run-time Version 1 .3 > Copyright (c) Rational Systems, c. 1990 ー 1 991 Fig. 6 テパッガⅲ stant ー D を使用するためのコンバイル方法 A : > Wd386 /dl /c f00. c A . > g ⅳ 32 -nod -cod -fo 「 mat line(foo) f00 0 切 Iib386*dos*clib3r 」 ib A : >makdbg32 f00 A : > d32 f00 注 ) 環境変数 INSTANTD は , あらかじめ使用するアダブタに合わせて設定しておく lNSTANTD:DlSPLAY(adapter)MODE(num) ROWS(num)COLS(num) ションて、用意されている。これは , 80386 / 486 ハードウェアのページング機能を利用 し , コードとデータを自動的にディスクへ スワップさせるものて、 , これを用いれば go 32 と同様 , 実装されている以上のメモリ空 間を使用て、きるようになる。本 VMM の AP I は DPMI 1.0 のスーパーセットて、ある。 バナーの抑制 DOS / 4G は起動されるたびに Fig. 5 のよう なバナーを表示するが , これをとくに抑制 したい場合は環境変数 DOS / 4G を DOS4G=quiet とセットすればバナーが表示されなくなる。
modify [ah] と定義する。以後は DOS puts ("He110' Hello, World! と表示される。 World!$") インライン機械語関数て、は , 値を返した り構造体を渡したりすることもて、きる。 ノヾフォーマンス 第 WATCOM C / 386 は強力な最適化機能を うたっている。そこて、 , まず標準 DOS 工ク ステンダて、ある DOS/4G とあわせ , 以下の条 件て、各コンパイラ , DOS 工クステンダとの パフォーマンスを比較してみた ( Table 2 ) 。 なお , 実行時間にはプログラムのロード時 とくに記してあるもの以 間は含まれない 外はその処理系における最大限の最適化を させている。 くテストプログラム > TabIe 2 Dhrystone べンチマーク Dhrystone 1.1 , 50000 バス く実行環境 > マシン PC-386M ( 80386SX / 16MHz ) 内部増設プロテクトメモリ 4M バイト 数値演算プロセッサなし MS-DOS Ver. 3 .30 く DOS 工クステンダ > DOS/4G Ver. 1 .3 exe386 Ver. 1 .00m g032 ver 98K もちろんこの結果だけからて、はコンパイ ラの性能を論ずることはて、きないが , DOS 工クステンダに関しては , DOS/4G よりは f ree な exe386, さらにそれよりは run386 を使 ったほうが速いようだ。 次に , 同じ実行環境て、 WATCOM C, T OWNS gcc 2.1 , djgcc 1.39 , High C 1. 7 について DOS 工クステンダを統一して実行 時間の比較テストを行った。 djgcc(DOS 工 クステンダは g032 ) 以外はすべて DOS 工クス テンダに run386 を使い , べンチマークプロ コンバイラ WATCOM C / 386 djgcc 1.39 TOWNS gcc 1.39 TOWNS gcc 2.1 ( 試験版 ) High C386 1.7 DOS 工クステンダ別実行時間 ( 秒 ) DOS/4G 16.59 16.14 「 un386 12.77 14.06 1 1 . 1 0 1 1 .92 exe386 g032 21.59 16.24 15.60 14.08 17.61 オプジェクトサイズ ( バイト ) 15598 / 1 1024 ※ 19269 21040 20920 40960 / 32726 ※ ※前者は DOS / 4G 用出力 ( 刀 = DOS4G ) の , 後者は Pha 「 Lap 出力 (刀 Table 3 各コンバイラのべンチマーク比較 = PHARLAP ) のオプジェクトサイズ 実行時間 ( 秒 ) グラムとして , 本誌と提携している TCOM PUTER LANGUAGE 』誌て使用している ものを用いた (Table 3 ) 。 全体的にみると , WATCOM C は得意不 得意があまりなく , おしなべて高速てある。 とくに浮動小数点演算 ( 工ミュレーション ) が速いことがわかる。数値演算プロセッサ っきの場合のべンチマークの結果がどうな るかも興味深いが , 今回はマシンがないた め残念ながら比較はて、きなかった。 おわりに く価格 > WATCOM C / 386 ver 8.5 く動作環境 > MS-DOS Ver. 3.1 以上 AX マシン , PS / 55 シリーズ ) 互換機 ( J ー 3100 シリーズ , く対応機種 > PC ー 9801 シリーズ , PC/AT ノヾイラオーノヾビュ ℃マガジン』 ' 91 年 12 月号特集「最新コン [ 参考文献 ] 応の日本語版は夏ごろ発売されるらしい るが , 北米版は対応している。 Windows 対 が , 本稿て、紹介した日本語版は未対応て、あ 気になる Windows への対応についてだ TeX や Emacs の出現が待ち遠しい Ⅵ TATCOMC / 386 を用いてコンパイルした ト実行スピードも満足のいくものて、あった。 高の部類て、ある。また売り物のオプジェク るようだし , ANSI 準拠度は現在望みうる最 版の紹介を行った。日本語は問題なく使え 以上 , WATCOM C / 386 ver 8.5 日本語 チェック項目 doub 厄演算 関数呼び出し long 整数演算 整数乗算 「 egister 整数演算 sho 整数演算 ライプラリ全体 オペレーション WATCOM 13.47 1 .44 4.48 4.01 4.48 5.27 13.24 djgcc 1.39 252.32 1 .47 5.26 3.54 5.30 6.64 34.42 シングルライセンス コーポレートライセンス DOS/4G VMM 198 , 000 円 594 , 000 円 880 , 000 円 580 , 000 円 benchdbl benchfn benchlng benchmul benchreg benchsho grind 1000 10000 10000 1000 10000 10000 High C 88.48 25.81 5.37 4.81 5.37 5.14 21.59 TOWNS 2.1 18.92 1 .69 4.83 3.98 4.83 4.84 24.10 く問い合わせ先 > #LIFEBOAT 〒 101 東京都刊弋田区神田錦町 3-6 Tel 03 ( 3293 ) 4711 速報 WATCOM C / 386 ver 8.5 45
テパッガ lnstant-D DOS/4G にはスクリーンデノヾッガ lnstant -D ( d32. exe) が付属している。コンパイラが WATCOM C / 386 の場合 , Instant-D て、デバ ッグするには , Fig. 6 のような手順て、コンパ イル・リンクを行う。また , あらかじめ環 境変数 INSTANTD を , 使用するアダブタ (VGA, CGA, EGA, MDA, MONO) に合 わせて設定しておく。 Instant-D は , ・プログラム情報の全表示 ( ソースコード , アセンプリコード , 全シンポル , スタッ ク , レジスタの状態 , Fig. 7 ) ・パフォーマンスアナライザ (PC/AT 互換 機のみ ) ・ビジュアルな呼び出し追跡 ・プログラムの中からのデノヾッガコマンド の起動 などの特徴を持つ。 ースを WATCOM C / 386 に移植するときの fmsbintoieee ( ) , fieeetomsbin ( ) など ANSI* 拠度 これらについてはソース互換性がないが , 問題点という面から見てみると , MS-C V er. 6.0 が独自に拡張したり 16 ビットコンパ 両者ともに ANSI にかなり準拠したコンパイ ラなのて、 , この範疇に入らぬ通常のソース イラ依存部分 , すなわち Plum HaLI Validation Sampler による A ・ sizeof ( int ) = 2 に依存したコーディング て、あれば問題のない互換性があると思われ NSI 準拠度チェックて、は , デフォルトの状態 ・新キーワード fastcall, asm, _seg, る。グラフィックは互換性がないだろうと て、 79 点満点中 78 点をマークした。これは , WATCOM C / 386 独自の拡張によるオプテ 、、〃〃による行内コメント 高をくくっていたのだが , graph. h が WAT イマイズて、値を返さない関数があるためて、 , COM C にも用意されていた。内容はまるき basecl'tk インタ 『 No. 58 数学ライプラリのセットする errno り MS-C の graph. h と同じて、 getcurrentpos bmalloc( ) などの b???( ) 系関数 ・ long double ( 80 ビット浮動小数点数 ) のサ setlinestyle ( ) などの MS-C 互換 の値』に関するテストは , コンパイル・リ ition( ) , グラフィック関数はほとんどプロトタイプ ンクは行えたが結果が正しくなかった。そ 数学関数て long double 型の引数と返り値 宣言されている。しかし , それだけて、 , マ れて、も , MS-C Vre. 6.0 が 76 点 , High C3 をもつもの (atanl ( ) などの ? ? ? 1 ( ) 系関数 ) ニュアルにもライプラリ内にもグラフィッ 86 Ver. 1.7 が 72 点 , Towns gcc 2.1 が 66 ・ pg チャート関数 点 ,djgcc 1 .39 が 59 点て、あるのと比べて , 極 ク関数は入っていない めて好成績て、ある。なお , / za オプションて、 _pg analyzechart ( ) などの pg チャート関 そのほかの特徴 独自拡張を禁止すると全テストにて、正しい 数 ( ヘッダファイル pgchart. h) 値を返した。 ・日本語関数 ヘッダファイル jstring. h に含まれるもの 付属ツールについて MS ー C とのソースライフラリ互換性 ・ OS / 2 関係 WATCOM C には wmake, touch, wdis 0S2. h , pm* . h 無論 100 % の互換性はない。 MS-C 用のソ ・浮動小数点のフォーマット変換 asm, womp などのツールが付属している。 Fig. 7 テパッガ旧 stant ー D の画面 Program Star t cstart + 0 0308 : 0017F4F4 EB69 0017F55F J IIIP 0308 : 圓 17F4F6 57 push edi 0308 : 圓 17F4F7 41 1 nc eCX 0308 : 0017F4F8 54 push esp 0308 : 0017F4F9 43 ebx 1 nc 0308 : 0017F4FA 4F dec ed i 0308 : 0017F4FB 4D dec eb 20?ebx] al 0308 : 0017F4FC 204320 and edi, [eax) 0308 : 0017F4FF 3338 xor ss:75Cedx],dI 0308 : 0017F501 36205275 and ds:[esi] 0308 : 0017F505 6E outsb 0308 : 0017F506 2D54696D65 sub eax, 656D6954 Instant-D vers ion 4. 04 Copyright (C) 1987 ー 1990 , 1991 by RationaI Systems, lnc. compi ler ニ WC 640K main memory, 347K avai lable Largest free block 636P. Largest lockable block 636P. Linear address space 768P. Free 1 inear 636P. PageabIe 636P. Free phys ical 636P. T0tal physical 768P. Ⅷ file size OP. HELLO. EXE Instant-D 4.04 80386 sw=l es P 00000000 = 00000000 00000000 eax ebx = 00000000 00000000 ニ 00000000 001827E4 eCX edx ニ 00000000 001827E8 ニ 00000000 00000000 eS1 edi ニ 00000000 00000000 ebp = 00000000 00000000 = 001827D0 00000000 esp ds ニ 0310 00000000 es = 0028 00000000 fs ニ 0000 00000000 gs = 0020 00000000 ss = 0310 00000000 00000000 cs = 0308 00000000 = 0017F4F4 00000000 e1P 00000000 efl = 00000200 00000000 . 00000000 STI CLD 00000000 00000000 cstart 3 速報 WATCOM C / 386 ver 8.5 43
wmake と touch はそれぞれいわゆる mak e と touch て、あり , wdisasm はオプジェクト 逆アセンプラて、ある。 womp はオプジェクト モジュールプロセッサというものて、 , コン パイル時の / dl , / d2 オプションによりオプジ ェクトファイルに埋め込まれたデバッグ情 報を変更 / 出力させるユーティリティて、あ る。これにより Microsoft CodeView フォー マットや Borland Turbo フォーマットに変 換し , CodeView や Turbo デバッガて、デバッ グを行える。 bpatch はフリーソフトウェア の bupdate のようなものて、ある 0WATCOM C システムに仕様の変更やバグの修正が行わ れると登録ユーザにパッチファイルが提供 され , ユーザは bpatch を使ってファイルに パッチをあてる。 アセンプラ出力について ほかのコンノヾイラのような , コンノヾイル 結果を直接アセンプラソースとして出力す る機能は持っていない。アセンプラ出力を 一旦オプジェクトファイルを作 得るには , り , それを WATCOM 逆アセンプラ wdisas m て逆アセンプルし , リストファイルあるい はアセンプラ出力を得る , という手続きを 経なければならない。 wdisasm のおもなオ プションは次のとおり。 / a ・・・・・・アセンプリ言語のみ出力 カファイルに取り込む / s ・・・・・ソース行情報があればそれを出 張子は」 st ) を出力する ・・リストファイル ( デフォルトの拡 から得られたアセンプラソース出力を Fig. 8 参考として , サンプルプログラム he110. c に示す。 いが , ソース内に直接機械語を埋め込むこ インラインアセンプラ機能をもっていな インラインアセンプラについて 44 C MAGAZINE 1 2 7 #pragma aux GRCG Off とがてきる。例えば , Fig. 8 アセンプラソース出力例 <hello. c> >#include <stdio. h> >main( ) p 「 intf("HeIIo, world !*n") ・ >Segment: '—TEXT' BYTE USE32 00000018 bytes >Group: 'FLAT' >G 「 oup: 'DGROUP' CONST, CONST2, —DATA, —BSS >ModuIe: hello. c くアセンプラ出力 > > #include<stdio. h> >main( > 0000 > 0005 > 000f > 0017 c3 > 0014 83 c 4 04 e 8 00 00 00 00 > 000a 68 00 00 00 00 printf("HeIIo, world!*h"); e8 00 00 00 00 b8 08 00 00 00 main— >NO disassembly errors mov call push call add ret eax, 00000008H --STK offset LI printf— esp, 0004H -Hello, w ー 0 日 d !. >Segment: ℃ ONST' DWORD USE32 0000000f bytes > 0000 48 65 6c 6c 6f 2c 20 77 LI A:>wdisasm /s 刀 h 0 A : > WC1386 /c / 引 hello. c < コマンドライン > >NO disassembly e 「「 0 「 s > 0008 6f 72 6c 64 21 Oa 00 0x30 0xC0 / * xor a し引 * / 0xE6 0x7C / * out 7c , 引 * / \ modify [al]/ * 破壊するレジスタ * / とするとインライン機械語関数 GRCG off ( ) が定義される。以後ソース内に℃ RCG off() ; と記述するたびにそこへ上記の 機械語がインライン展開される。 インライン機械語関数に引数を渡したい 場合は , 例えば のようにプロトタイプ宣言をしておき , / * 文字列出力ファンクションコール * / void DOS puts (char * ) ・ #pragma aux DOS puts 0xB4 0x09 / * mov ah, 09h * / \ parm [edx] 0xCD 0X21 / * int 21h * /
MAGAZINE 1992 年 7 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 4 巻第 7 号通巻 34 号 1990 年 2 月 2 日第 3 種郵便物認可 提携・ LAN ー E 誌 / 監修・石田晴久 C 言語技術情報誌・ C マカシン 0 0 新連載・ C + + 入門講座 TryThe C + + 〈第 1 回〉拡張 C としての C + + 速報・ WATCOM C / 386 ve 「 8.5 巻頭インタビュー Ted NeIson 1 情報システム xanadu 開発者 提携記事・ ReaIizing the PotentiaI of SOL 実践 C プログラミング入門咄 turn の働きとポインタ 新 MS - DOS プログラミング入門・時間計測 実践刊レゴリズム戦略・高速文字列検索 jgcc 詳解講座 ・本誌掲載、ノースプログラム ・ Windows 版 TAKALITHrWAKATAKA 」 ・ FM 版スクリーンエデイタ「 SE3 」 ・郵便番号・市外局番データ ・ X68000 版 G 十十 Ve 「 .1 40.3 ① 5 " 2HD 特別付録 プログラミングの工ッセンス / X68k 活用講座 1992 JUL VOI. 4 No. 7 980yen 0 0 0 特集 : C + + クラスライフラリ概論
C.D 7 ー 4 『 種 ( 第、 号 第「 発 回 Ted Nelson ( 1 ) 情報システム xanadu 開発者 Programnung on Purpose 『 AII sorts of sorts 』 p. J. Plauger SQL のパワーを活かすために Realizing the Potential Of SQL フリーソフトウェア最新レポートく第 31 回〉 N をつかってみる野口雄平 Book Review WATCOM C / 386 ver 8.5 山口誠之 速報レポート 。 = C 十十クラスライプラリ概論 プロローグ・クラスライプラリとは村山孝夫 Part 1 ・ BC + 十 3.0 と MS ー C / C + + 7.0 に見る MS ー Windows 用クラスライプラリ佐藤隆 Part 2 ・市販クラスライプラリ解説エピステーメ Part 3 ・ GNU C + 十ライフラリマニュアル村山孝夫 Try The C + + く第 1 回〉よりよい C としての C 十十山本浩文・白倉伸一郎・ 実践アルゴリスム戦略解法のテクニッグ第 4 回〉高速な文字列・ ・・・ 94 プログラミングの工ッセンスく第 6 回〉。見なす。結城浩 103 ー田典玄のランタムアクセスく第 13 回〉。。負の思索 痛快工ッセイ 恥すかしながらドシりましたく第 32 回〉言葉とコンピュ→との。なじみ " を模索する岩谷宏・・ ・・・・ 112 C 言語フォーラム 実践 C プログラミング入門く第 4 回〉「の働きからポインタ奥村晴彦・・ ・・・ 116 Step by Step 新 M S ー DOS プログラミンク入門く第 22 回〉時間を計測する中島信行 ・・・ 124 C プログラマのための HelIo G CC Wo 日 d く第 9 回〉システム依存ライプラリ安田英之・ ・・・ 128 djgcc 詳解講座 の道具箱く第 25 回〉レーサプリンタの制御③豊国永健 133 応用 C 言語 GCC Ver. 2 の移植と G 十十く第 2 回〉 X68 。。。版 G + + ver. 1 4 。 3 吉野智興・ ・・・・ 139 X68k 活用講座 ワンポイントプログラミング講座く第 21 回〉ピットシフトによるファイルの暗号化上田哲ニ ・・・ 145 ・・・・ 148 Microsoft Developer's Conference Conference Room 「 The 1992 Borland lnternational Developers Conference 」参加報告石川勝 149 Conference Room C MAGA News Square ・・・・ 152 lnformation from Compiler Makers マイクロソフト ・・・ 154 フィンローダのあつばれこ意見番く第 3 回〉 CR が先か , LF が先か・ ・・・・ 156 lnformation from Compiler Makers 工ル・エス・アイジャパン / ライフボート・ C マガ電脳クラブく第 16 回〉ふらさがり覆面算吉柄責樹・ ・・・ 160 lnformation from Compiler Makers 富士通 / システム・ワン ・・・ 162 円羽信夫の迷走プログラミングくその 7 〉 c クイズ研究会 ・・・ 164 lnformation from Compiler Makers ボーランド ・・・ 166 ・・・ 168 Readers' Room ・ ティスク内容のお知らせ EDITORS' ROOM ・ ・本記事中のフログラム名 , システム名 , CPIJ 名は一般に各メーカーの登録商標です。本文中では TM , ⑧マークは明記していません。 ・本誌および付録ディスクに掲載されたすべてのフログラムは著作権法上 , 個人で使用する目的以外で無断で復製することは禁しられています。 表紙・イラストレーション・秋山育 / テザイン・持田哲 Publisher: Masayoshi Son Publishing Director: GO 「 0 Hashlmoto Editor-in-Chlef. Shimchi Hoshlno Manager 0f SaIes and Advertising: YOShiO Goshima EditoriaIand Business 0ffices: NS Takanawa B g.. 2-19-13. Takanawa. Minato-ku. Tokyo 108. Japan Editorial: Phone ( 03 ) 5488-1318 Sales: Phone ( 03 ) 5488-1360 Advertisi ng Tokyo. Phone ( 03 ) 5488-1365 Osaka. Phone ( ) 264-1471 Copyright ℃ 1992 SOFTBANK Corporation. Tokyo. AII rig hts reserved. No materialin this publication may be reproduced. in whole 0 「 in part, in any イ 0 「 m without permission. Pri nted in Japan. 巻頭インタビュー 6 8 0 COMPUTER LANGUAGE 提携記事 46 新連載 松田晋・
, 92 年 7 月号特別付録 ( 5 〃 1.2M8 セクタ / ト 載 , データを付録ディスクに収録したとこ 「 BC 十十 3.0 と MS ー C / C 十十 7.0 に見る MS ー ラック MS-DOS フォーマット ) には , 次のプ ろ多数の反響をいただきました。そのこと Windows 用クラスライプラリ」を書くにあた をデータ作成の中心人物て、ある村田正氏に ログラムが収録されています。 り , Windows プログラミングを実践してみ ①付録ディスクの説明 伝えたところデータ集のバーションアップ ようということて、移植を思い立ったそうて、す。 ( テキストファイル ) が完了したとの報告を受け再収録いたしま README 付録ディスクに収録した ② X68000 版 G 十十 Ver. 1 . 40.3 ( その 1 ) *WAKATAKA*WAKATAKA. EXE 、 0 くディレクトリ > YXGPP 付録ディスクに収録した は自動解凍圧縮ファイルて、す。解凍後生成 ③郵便番号・市外局番・漢字データ集 *ZIPETC*ZIPETC. EXE される README. DOC をご一読のうえお楽 < ディレクトリ > YZI PETC は自動解凍圧縮ファイルて、す。解凍後生成 しみください。 ④ FM 版スクリーンエデイタ「 SE3 」 される各ディレクトリの README. DOC を 本誌掲載プログラム YSE3 くディレクトリ > ご一読のうえご使用ください ⑤ Windows 版 TAKALITH 「 WAKATAKA 」 なお , 日本語 FEP の辞書へ一括登録する YWAKATAKA < ディレクトリ > には JGAWK が必要て、す。 JGAWK は ,91 年 : SQL のパワーを活かすために SQL ⑥本誌掲載プログラム WATC : 速報 WATCOM C / 386 11 月号付録ディスクに収録しています。 YCMAGA くディレクトリ > : 特集 C 十十クラスライプラリ TOKUSYU FM 版スクリーンエテイタ ⑦ READ. ME 参照ューティリティ : Try The C 十十 TRYCPP 「 SE3 」 : 実践アルゴリズム戦略 README. EXE ( 実行ファイル ) S TRATE 付録デ、イスクの説明 (README) に , 解凍 「実践 C プログラミング入門」などの掲載プ : プログラミングの工ッセンス ESSEN CE 方法など , さらに詳しい説明が収録してあ ログラムをエディットしながら学んて、いた STEPC : 実践 C プログラミング入門 ります。必ずご一読ください だくこととソフトの不正使用防止の意味合 : 新 MS-DOS 入門 MSDOS README はテキストファイル形式てす。 いも込めて , ' 92 年 4 月号付録ディスクに DO : djgcc 詳解講座 DJGCC 本誌付録ディスク収録の README プログラ S/V 版 , J ー 3100 版 , PC ー 9801 版の SE3 を収録 : 応用 C 言語 C の道具箱 OUYOU したところ , TOWNS ユーザ , FM-R ユー ム , MS-DOS の TYPE コマンド , あるいは : GCC て、学ぶ 68 ゲーム X68K ザの皆さんからもそれぞれの SE3 を収録して ご使用のエデイタ , ワープロソフトて、読む OPPK : ワンポイントプログラミング ことがて、きます。 欲しいという声を数多く寄せられたのて、 TO CONF : Conference レポート WNS 版 , FM ー R 版 SE3 を収録いたしまし : あつばれご意見番 APPARE X68000 版 G 十十 た。なお , FM-R 版 SE3 には : C マガ電脳クラブ PUZZLE Ver. 1 .40.3 ( その 1 ) ・終了時ファンクションキーなどのアサイ : 迷走プログラミング 、 . → N IWA ' 91 年 5 月号より ' 92 年 3 月号まて、好評収録 ンが復旧されていない INFO : インフォメーション した「 X6800 に移植された GNU C Compile ・画面の背景色がおかしいときがある REA ユ ME 参照ユーティ r 」に続いて X ユーザに贈る X68000 版 G 十十 というふたつの問題点があるそうて、す。安 リティ Ver. 1.40.3 てす。こんなふうに書くと「え 定動作て、有名な SE3 の中やヾグ報告があるの つまた , GCC みたいに 11 回も収録するのお」 は FM ー R 版だけということてす。問題点を念 ' 92 年 4 月号「新 MS-DOS プログラミング と不安の皆様 , ご心配なく。 X68000 版 G 十十 頭に置いてご使用ください 入門」て紹介した READ. ME 参照ューティリ Ver. 1.40.3 は今回と次回の 2 回て収録を完 ティ ( テキストファイルを画面上て読むプロ Windows 版 TAKA 凵 TH 了する予定て、す。今回は , コンパイラ本体 グラム ) の実行ファイル ( README. EXE ) を 「 WAKATAKA 」 などの実行ファイルを収録しました。 README と同じルートディレクトリに収録 古くは TAKALITH, 最近て、は ' 92 年 3 月号 しました。付録ディスクをセットしたドラ 郵便番号・市外局番・ にて掲載・収録した TAKA3DES と本誌て、お イプにカレントを移し 漢字テータ集 なじみの立体充填ゲーム TAKALITH が W READMEØ ' 91 年 12 月号に読者投稿プログラム「郵便 indows 版 WAKATAKA として装いも新に て、 README ファイルが画面に表示されま 番号・市外局番・漢字データ集」として掲 登場てす。 WAKATAKA は本誌特集 Part1 す。 ディスク内容のお知らせ 171