Turbo - みる会図書館


検索対象: 月刊 C MAGAZINE 1990年7月号
36件見つかりました。

1. 月刊 C MAGAZINE 1990年7月号

Turbo C 十十最新レポート 野口修男 MS - DOS 上の C コンバイラのシェアは , 実質的にマイクロソフト 社とボーランド社とでニ分されている。最近 , 両社かあいついで , 重要な新バージョンや新製品を発表した。本記事では , ボーランド 社の Tu 「 bo C 十十について , 最新情報をお届けする。 Turbo C 20 と併存する Turbo C 十十 5 月 15 日に , 米ボーランド社が発表した Turbo C 十十は , 独立した製品として発売 された (Turbo C 十十の特徴を Fig. 1 にまと めた ) 。 いままて、噂されていたような , C 十十の機 能を取り込んだ Turbo C のバージョンアッ プてはなかった。つまり , 当面は , Turbo C 2.0 と Turbo C 十十は併存するということ だ。 Turbo C 十十は , 発表と同時に出荷が 開始された。また , 現時点ては Turbo C 2.0 の新バージョンについては発表されていな い。しかし , Turbo C 十十は , わずかな箇 Fig. 1 Turbo C + 十の特徴 ・ AT&T C 十十 2.0 のフルインプリメント ・ ANSI C 完全互換 ・ Programmer ・ s 日 a 廿 0 「 m マウスサポート オーバラッピングマルチウインドウ マルチファイルエデイタ 所を除いて , Turbo C 2.0 のスーパーセッ トて、あり , 将来的には , Turbo C を吸収し てしまうだろう。 現在の製品は , IBM PC 上のみて、動作し , ほかの機種 ( PC ー 9801 , FMR など ) への移植 にはまだ多少時間が必要だろう。しかし , ポーランドジャパン社は , いままて、も , 極 めて短いタイムラグて、移植を行ってきたた め (Turbo Debugger & T001S 2 . 0 PC ー 9801 版の 6 月出荷をすてに発表 , 本誌 128 頁 参照 ) , 予想以上に速いかもしれない なお , 以下の情報は , ほとんどがポーラ ンド社から提供された TTurbo C 十十 Reviewer's Guide 」に基づき , また一部 は , 米国の CompuServe のポーランド Forum から入手したものてある。しかし , 筆者自 身が , 実際に処理系を入手し , 使用したわ けて、はないのて , 多少誤解などが混入して いるかもしれない。その点はご了承願いた Turbo C 十十の 言語仕様 まず , 言語仕様について触れてお ' AT@T C 十十 2.0 完全互換 フ。 インテリジェントプロジェクトマネージャ クラスをインスペクト可能な組み込みテパッガ Transfer 機能 ・ VROOMM(VirtuaI Run-time Object-Oriented Memory Manager) オーバレイマネージャ ・スタンドアローンコンバイラ , リンカ , そのほかのツール ・ TCTUTOR オンラインチュータ ・ヒープチェック関数 , 複素数 , BCD 演算関数 , クラスライプラリ ・環境 (Programmer's 日 a 廿 0 「 m ) からインラインアセンプラが使用可能 18 CMAGAZINE 19N 7 Turbo C 十十の言語仕様は , AT&T C 十十 2.0 を完全に満たしたものて、ある。 C 十十は , AT & T て、開発された C の「拡張」 言語て、あり , C の後継言語の地位を築きつつ あることは既知のとおりて、ある。 C 十十は , 1984 年の Ver. 1.0 の公開以後 , 徐々に拡張され , 昨年 , 多重継承がサポー トされた 2.0 が発表された。言語としての元 成度はかなり高く , Bjarne Stroustrup 氏 も , 「多少の改良や追加点 ( パラメータ付ク ラスや例外処理など ) はあるが , 基本的な部 分は完成した」と述べている。 ポーランド社が , 2.0 にいたって , 初め て , C 十十コンパイラを発古した ' と (Zortech ノし、 C 十十などの C 十十処理系は , 1.0 の頃から販 売されていた ) は , 2.0 の高い完成度が評価 されていることを推測させる。 真のコンバイラ AT & T が提供している C 十十処理系は ,

2. 月刊 C MAGAZINE 1990年7月号

い引新しいア URBO 0 シリー にス第 980 キャンべーン特別価 月 3 TURBO PROFILER ・ TURBO DEBUGGER ・ TURBO ÅSSEMBLER ・ TURBO ASSEMBLER ・ TURBO ASSEMBLER ・ TURBO C ・ TURBO C ・ 0 0 一 990 7 一 ( 一回一談 ) 2 7 蜘一 0 叩一 990 2 2 3 麟團 USERS GUIDE USER ・ S GUIDE USER'S GUIDE QUiCK REFERENCE GUID 冪 NC 〔 GUIDE 新製品・ Tu 「 bo Debugger & T00 2.0 発売記念キャンへーン、 6 月末より実施 ! ! プロクラム開発作業を強力に支援する、プロフェッ グラム開発環境を、あなた自身て、ご体験ください •Turbo Assembler 2.0 の特長・・ MASM との高 い互換性を保持・ 80486 まて、の命令をフルサポート・マ ・キャンペーン特別価格 ( 6 月末 ~ 9 月末 ) ショナルのためのツール - ー・ Turbo Debugger & Assembler カまさらに使いやすく、さらにパワーアッ ルチパスにより前方参照による非効率なコード生成を抑止 Turbo PASCAL 5.5 P 「 0 ・ 39 , 800 円 ( 税別 ) プして「 Turbo Debugger & T00 2.0 」として ・ 39 , 800 円 ( 税別 ) Turbo C 2.0 P 「 0 •Turbo Debugger & T00 2.0 の動作環境 生まれ変わりました。この革新的な開発ツールは、 機種 PC ー 9801 シリーズ、 PC ー 286 シリーズ ( ハイ プロクラムを解析し重要な部分を最適化するため レゾリューションモード、 LT は除く ) の手助けをし、信頼性・性能の高いソフトウェアか メモリ 640KB 以上 開発できます。また、 Turbo Debugger & T00 MS-DOS バージョン 2.11 以上 2.0 は、コンパイラを問わすプログラムの性能を解析 新価格 し、仕様を再検討することができるようになりました マウス / ヾスマウス ETurb0 Debugger&T001s2.0 ・・・ 29 , 800 円 ( 税別 ) USER'S GUIDE REFERENCE CUIDE Turb0 Debugger & TooIs 2.0 新発売記念・特別キャンべーン実施 ! 今回、 Turbo Debugger & Tools 2.0 の新発売を 記念して、特別キャンペーンを実施いたします。このキ ャンペーン期間中 ( 6 月末 ~ 9 月末 ) に限り、新製品 Turbo Debugger & T001S 2.0 を含む Turbo PA- SCAL 5.5 Pro 、 Turbo C 2.0 Pro( 共に 2nd Edi- ti ( ) n ) を特別価格 39 , 800 円 ( 定価 49 , 800 Turbo Debugger & Tools 2.0 には、次の 3 つのフ TURBO C 円 ) にて販売。フロ ログラムが含まれています。 グラム 1 本あたり、な褓 SSIO ツ / •Turbo Debugger 2.0 の特長・・・・マウスをサポー トした新しいユーザインターフェース・ 80386 の仮想 んと 9 , 950 円という驚 86 モードを利用して大規模なフログラムのデバッグ 異的なハイ・コストパ 力す可育皀 フォーマンスを実現 •Turbo P 「 of ⅱ e 「 1.0 の特長・・世界初の会話型 しました。どうぞ、この 機会に Turbo シリー フロファイラ・ルーチンや行単位ての実行時間・実 行回数が測定可能・リモートフロファイルをサポート ズの素晴らしいフロ ※ AII Borland Products are trademarks 0 「 registe 「 ed trademarks Borland lnternational, lnc. CBorIand lnternatlonal, ⅲ ※その他、商品名は一般に各社の商標です。 ・製品に関するお問い合せは、総販売元株マイクロソフトウェアアソシェイツ TEL. 03-486-1411 までお願いします Turb0 Debugger&T001s 2.0 の主な特長 。 TURBO DEBUCCER & TOOLS 2.0 株式会社ホーランドジャパン 〒 107 東京都港区南青山 7-8-1 小田急南青山ビル TEL. 03-486-1400 代 TURBO C PROFESSIONAI__-- 価 HICH-PERF 〇 RMANCE PROCRAMMER PRODUCTIVITY TOOIS ー 0 ーー農、 0 ー 0 ーは一 0 951 T 4 9 1 1 4 5 2 5 0 7 9 8 1 雑誌 14325 ー 7 ◎日本ソフトパンク凸版印刷 Printed in Japan

3. 月刊 C MAGAZINE 1990年7月号

ホーランドジャパン 0 「 m 面 on from (ompiler Ma 「 5 Turbo C 2.0 Turbo Debugger & T00 2.0 PC -9801 版 Turb0 Debugger & T00 2. O について ポーランドては , 6 月末に , PC- 9801 版 Turbo Debugger & Tools 2.0 を発売します。 Turb0 Debugger & T001S 2.0 は , 評価 の高い Turbo Assembler & Debugger 1.0 の次バージョンて , Turbo Debugger 2.0 , Turbo Assembler 2 . 0 および Turb0 Profiler などが含まれています。 出荷予定平成 2 年 6 月末 価格 29 , 800 円 ( 税別 ) 必要メモリ 640KB 以上 びその互換機 適用機種 PC ー 9801 シリーズ , およ ル 5 冊 ( 和文 ) 内容ソフトウェア 1 式 , マニュア [ 製品概要 ] TurbO Debugger & T00 2.0 まて、ご連絡ください ていない方は , サポートセンター いるにもかかわらず , 案内が届い 願い致します。ューザ登録されて いない方は , すみやかに登録をお まだ , ューザ登録をすまされて 送りしております。 には , アップデートのご案内をお ger 1.0 ( PC ー 9801 版 ) をおもちの方 Turbo Assembler & Debug Turbo Profiler, Turbo Assemb ler 2.0 を中心に構成されていま す。 Turbo Debugger 2.0 は会話 型の高性能デバッガ , Turbo Prof ⅱ er はプログラムの各部分のパ フォーマンスを測定する会話型の プロファイラ , Turbo AssembIer 2.0 は , 高速アセンプラてす。この ほかにも , プログラマ向けのツー ルが用意されています。 Turbo Debugger は , どんな 占が新しくなっていますか ? Turbo Debugger 2.0 ては , 新たに , 次のような機能がサポー トされました。 ・マウスをサポートしたユーザ インタフェイス ・逆トレース機能 ・キーストロークの記録 / 再生機 ・ 80286 のプロテクトモードを利 用したデバッガ ・オプジェクト指向プログラミ ング対応 ・常駐プログラムやデバイスド ライバのデバッグ機能 もちろん , 従来の Turb0 Debug ger 1.0 の機能は , そのまま受け継 0 A に関する Q & A Turbo Debugger & のパッケージにはどんなツ 人っていますか ? Turbo Debugger & 2 . 0 は , Turbo Debugger 150 CMAGAZINE 19 7 0 A がれています。 プロファイラク プロファイラは , 0 とは ? プログラム T001S ー・ノレカま T001S 2 . 0 , が時間を消費している部分や , コ ードの部分が実行される頻度の解 析データを展開するツールてす。 デバッガがプログラムのバグを発 見するように , プロファイラはプ ログラムの実行が遅い部分を見つ けるのて , プログラムの改善を行 ことがてきます。 フ Turbo ProfiIer は , プログラム の実行時のパフォーマンスを測定 します。具体的には , 以下のよう な項目について , 測定を行います。 ・プログラム中て時間が消費さ れた部分 ・ソースコード行の実行が行わ れた回数 ・ルーチンが呼ばれた回数とそ のルーチンを読んだルーチン ・多くアクセスされたファイル とそれに費やされた時間 また , 以下のコンピュータ資源 を監視することも可能てす。 ・プロセッサ時間 ・ディスクアクセス時間 ・キーポード入力 ・プリンタ出力 ・割り込み処理 A 0 プロファイラ自体は , ソフト ていないのてすか ? ッガと同じような頻度て使用され なぜ , プロファイラは , デバ ァイルに書いてそのファイルを工 ァイルは行えず , 結果をほかのフ しば , 大きなプログラムのプロフ はありませんてした。彼らはしば 特別なエリアに集中てきるものて しかし , このツールはコードの たツールを開発しました。 するために , バッチ処理に基づい 彼らは , プログラムの効率を理解 の先駆者によって認識されました。 ファイラの価値は , コンピュータ 新しいものてはありません。プロ ウェア開発環境において , とくに デイタにロードして検査と解析を 行っていました。 その後 , このようなプロファイ ラの初期の試みは , 理解するのが 難しいことや使いやすい会話型環 境をもつものもなかったため , 商 業的に広まったものはありません てした。 しかし , 世界初の会話型プロフ ァイラて、ある Turbo Pr0filer の出 現により , プログラムのポトルネ ックを指摘することが簡単にてき ます。 0 プロファイラは , オプティマ イザとはどのように違うのてすか ? A オプティマイザは , 適当なア ルゴリズムを用いて高速化やメモ リの効率化を行うために , コンパ イルされたコードを修正します。 しかし , オプティマイザが貧弱な アルゴリズムやデータ構造の改善 を行うことはありません。 Turbo ProfiIer は , プログラム のデータ構造とアルゴリズムをも っとも効率のよいものにするため に必要な情報を提供します。 しかしながら , プログラマには プロファイラとオプティマイザの 両方が必要てす。コンパイラオプ ティマイザは最高のコードを生成 するために必要てすし , プロファ イラは改善されたアルゴリズム , またはデータ構造から得られる大 きな進歩を見つけるために必要と なります。 スチューデントパック , ラボ パックの取り扱いはどうなります 0

4. 月刊 C MAGAZINE 1990年7月号

PC -9801 版 TURBO DEBUGGER &TOOLS 20 リースされた。 6 月末から販売される予定である。今回 日に Tu 「 bo Debugge 「 & Tools PC -9801 版がリ 今年 2 月の SD ' 90 では一 BM - PC 版の発表に続き , 5 月 10 大野元久 緊急レポート は , それらの製品の概要について紹介する。 はじめに ■ プログラムはより高度化 , 複雑化 , 巨大 化しています。こうしたプログラムを開発 するためには , もちろん優れた技術者が不 可欠て、すが , それに加えて , よりよい開発 環境が求められています。大規模なプログ ラムをデバッグするために , プログラムの 品質を一層向上させ , しかもて、きるだけ手 間を省くためには , 使いやすく , 多機能な ツールが必要て、しよう 0Borland 社の Turb0 こうしたプログラム Debugger&Tools は , の開発を強力にサポートするためのツール 群て、す。 Turbo Debugger&Tools には , 高度な機 能を備えた Turb0 Debugger 2.0 , 世界初の 会話型プロファイラ Turbo Profiler, 高速 なアセンプルとマルチパスによるオプティ マイズを実現した Turbo Assembler 2.0 が 含まれています。 ■ TurbO Debugger 2.0 ■ デバッガに必要なものとはいったい何て、 しようか。 ①大規模なプログラムのデバッグ デバッガをいくら高機能にしても , その ためにデバッグの対象となるプログラムサ イズが制限されては , 本末転倒て、す。 Turb 。 Debugger には , 大規模プログラムをデバッ グするためのさまざまな方法が用意されて います。 128 CMAGAZINE 1990 7 Turbo Debugger 自身も , VROOMM (VirtuaI Run ー time Object ー Oriented Memory Maneger) を利用しており ( これに ともない Ver. 1. x にある TD. OVL はなくな り , ひとつのファイルになった ) , 多くの機 能が追加されているにもかかわらず , メモ リの負担は , それほど大きくありません ( 2.0 て、は , デフォルトて、 270KB , ー y オプション を使って最低 210KB 程度まて、減らすことが て、きる ) 。 ②デバッガとユーザ環境の分離 Turbo Debugger は , て、きるだけデノヾッガ て、の操作がユーザ環境に影響をおよばさな いように設計されています。なぜなら , デ バッガがユーザ環境に影響をおよばしすぎ ると , 問題がほんとうにユーザプログラム て、発生しているのか , デバッガと干渉しあ って発生しているのかわからなくなるから て、す。たとえば SYMDEB て、は , デバッグし ている際にレジスタなどが表示されて , ユ ーザプログラム画面が破壊されてしまいま すが , これはデバッグの際の妨げになって います。 Turbo Debugger の画面出力は , すべて画 面に直接行われ , ューザプログラムの実行 画面が破壊されないように , テキスト画面 の内容が保存されています。デバッガから メモリをアクセスする場合も , テキスト画 面の領域て、あれば , 保存されている内部メ モリにアクセスするようになっています。 こうして環境の保存を行 しかしながら , っても , 1 台のコンヒ。ュータを使っているか ぎり , どうしても制限される部分がありま す。たとえば , Turbo Debugger は DOS フ アンクションを使っていろいろなファイル をアクセスしていますが , そのため Turbo Debugger て、 DOS ファンクションの内部をデ バッグすることはかなり危険てす。 Turbo Debugger は 2 台のコンヒ。ュータを通信回線て 接続することて、 , デバッグ側の環境とユー ザプログラム側の環境をほば完璧に分離す ることがて、きるため , こうした問題にも対 応て、きます。 ③ユーザの負担が軽いこと Turbo Debugger は , 当初からデノヾッガの ためのキー入力がて、きるだけ少なくてすむ ように設計されており , 簡単なキー操作て、 さまざまなことが行えるようになっていま したが , Turbo Debugger 2.0 ては , マウス がサポートされ , ほとんどのデバッグ作業 をマウスだけて、行うことがてきるようにな りました。 また , デバッグをやりなおす際も , ュー ザプログラムに入力された内容を記録して おくことがて、きるため , 同じ入力を行う必 要がなく , 手間が省けます。 実際 , Turbo Debugger 2.0 は , デバッグ 作業に必要と思われるほとんどの機能をサ ポートしたうえて、 , それぞれの機能を簡単 に使えるようなユーザインタフェイスを備 えています。 マウスをサポート Turbo Debugger 2.0 ては , マウスがサポ ートされました。これにより , 操作性が格 段に向上しました。マウスて、クリックする

5. 月刊 C MAGAZINE 1990年7月号

TURBO DEBUGGER & T00 [ S2.0 ればよいかを「 Turbo の手軽さて」知ることが ドが用意されています。このモードては , Turbo ProfiIer てきます。 プログラムのおよその実行時間だけが解析 もちろん , Turbo Debugger 2.0 と同様に てきます。 マウスをサポートした会話型の環境をもっ 最初に , パッシププロファイルてプログ 「プロファイラ」とは , 人によっては聞き ているのて , この環境の中に用意されてい 慣れない言葉かもしれませんが , これは , ラムの実行のようすを調べておき , 問題と るプログラムのパフォーマンスを調べるた プログラムのどの部分にどれだけの負荷が なっていそうなところをマーク (Turbo めのさまざまな機能を利用し , 必要な情報 ProfiIer ては , 調べたい関数や行を個別にマ かかっているか , どの部分を修正すればよ を簡単に入手することがてきます。 り高速になるか , どの部分がどれだけ呼び ークしておくことがてきる ) して , 細かい調 査を行うとよいてしよう。 出されているかなどを調べるための「プログ アクテイププロファイル これら 2 種類のプロファイルモードを併用 ラムの実行解析ツール」て、す。 ノヾッシププロファイル することて , すばやく問題となっている部 たとえば , 一般にプログラムの実行時間 分を特定することがてきます ( Fig. 3 ) 。 Turbo ProfiIer は , 2 種類のプロファイル の 80 % をプログラムの 20 % のコードが占め 方法をサポートしています。アクテイププ ているとします。もし , プログラムをより ファレアクセスのモニタ 高速化するためにアセンプラて、書き換えよ ロファイルては , プログラムの実行時間や うとする場合ても , 20 % の実行時間しか占 実行回数などを正確に記録することがてき 現在 , たいていの場合 , フロッヒ。ーディ ます。パッシププロファイルては , 一定間 めていない 80 % の箇所より , 80 % の実行時 スクドライプはもっとも遅い記憶装置てす。 隔ごとにプログラムに割り込みをかけ , プ 間を占める 20 % の部分を書き換えるべきて どんなに効率のよいアルゴリズムを使って ログラムの実行位置をサンプリングするこ プログラミングしても , 頻繁にディスクア とて解析を行います。 すてに , Turbo C, Turbo PascaI, Turbo クセスをする必要のあるプログラムの場合 アクテイププロファイルの長所は , 実行 Assembler は , ある程度のオプティマイズ機 は , 速度は期待てきません 0Turbo ProfiIer 能を備えていますが , オプティマイザは , 時間や回数を正確に測定てきるところて、す。 て、は , 標準入力 / 標準出力を含めて , ファイ よくないアルゴリズムが使われていても , プログラムが行うファイルアクセスの状況 ルアクセスに関してモニタすることがてき それを修正することまてはてきません。 や , BIOS 割り込み , DOS ファンクションの ます。ここて得られた結果をもとに , デー 呼び出しなどについても , その状況を正確 タが少しずっ , 何回も読み込まれているの 世界初の会話型プロファイラ に把握することがてきます。しかしながら , てあれば , バッファリングするなどの方法 正確かっさまざまな記録をとろうとするほ てプログラムの改良が可能てす。 Turbo Profiler は , 世界初の会話型プロ ど , プログラムに対するオーバヘッドは大 ファイラてす。 Turbo ProfiIer を使えば , オーノヾレイのプロファレ きくなります。このため , オーバヘッドが プログラムの実行状況を解析して , どの部 ほとんどないパッシププロファイルのモー 分を最適化したりアルゴリズムを書き換え Turbo PascaI 5.5 のオーバレイはもちろ ん , Turbo C 十十がサポートしている Fig. 3 プロファイルオプションの設定メニュー画面 VROOMM が , どのような頻度てアクセス されているかを記録します。オーバレイを 使うと , どうしてもメインメモリて実行す ule: I 「伍 4 File: ⅳ旧 4.0 [ ・ ] 「 るよりも効率が悪くなりますが , あまり使 燃 I 正 4 # 17 I 4 # 18 I 礪 24 われない関数をオーバレイにするなどして , 1 礪 可能なかぎり , 防止することがてきます。 レポートの作成 Turbo Profiler< 解析した結果は , ソー スモジュールに注釈をつけた形てファイル やプリンタに出力することがてきます。 のレポート結果をもとに , どの部分を修正 すればよいかを判断し , プログラムをより 効率のよいものにすることがてきます (Fig. 4, Fig. 5)。 ■ .0 .0 .0 .0 n = 1 ー fo 「 (i=2; Of i 「加 n 」 1 wk s ぐわ t 8 i 1 a b 1 e> i on Prof ⅱ T0ta1 tinp: 1 . 1 % of total : % : 1 of 1 I 正 4 # I 礪 15 I 礪 18 # I 礪 8 bet the nzxinum 8m2 「・ of areas 引 1 TURBO DEBUGGER & TOOLS 2.0 131

6. 月刊 C MAGAZINE 1990年7月号

効てす ( 本原稿の執筆時点てはこの機能が実 現されていないため , キー入力の再生がど のレベルまてサポートされるかは未確認 ) 。 80286 のプロテクトモードの活用 Turbo Debugger 2.0 ては , 80286CPU て、 もプロテクトモードを活用し , デバッグす るプログラムに多くのメモリを解放するこ とがてきるようになりました ( プロテクトモ ード用のメモリが必要。プロテクトモード を使ったプログラムをデバッグてきるわけ て、はない ) 。 リモートデバッグとともに , 大規模プロ グラムをデバッグて、きる環境がいっそう広 ' とになります。 がった 常駐プログラム / デヾイスドライバ 常駐プログラムやデバイスドライバのシ ンポルデバッグが , サポートされました。 ただし , Turbo Debugger 自身が , DOS フ アンクションを使ってファイルアクセスな どを行っているため , デバイスドライバの デバッグに関してはかなり制限されます ( こ れは , DOS ファンクションがリエントラン ト ( 再入可能 ) になっていないため , DOS フ アンクション実行中にデバイスドライバが 呼び出され , その中にプレークポイントが 設定されると , Turb0 Debugger 自身がさら に DOS ファンクションを呼び出してしま い , DOS の内部ワークエリアが破壊されて しまうからてある ) 。この場合は , リモート デバッグを使うことて対応てきます ( リモー トデバッグは , 通信回線を除き , デバッグ 側の環境とユーザプログラムの環境をほば 完全に分離することがてきるため , こうし た問題が発生しない ) 。 Turbo Debugger が , こうしたプログラム をデバッグするのに使っている方法は単純 てす 0Turbo Debugger 2.0 は , プログラム のデバッグ情報だけをロードしたり , 自分 自身が常駐する機能を備えています。 Turb 。 Debugger 1.0 ても , COMMAND.COM を 呼び出して常駐するようなプログラムてあ れば , デバッグてきないわけてはありませ ん ( 本誌 ' 89 年 11 号参照 ) 。 130 CMAGAZINE 19 7 こうしたプログラムては , Turbo Debugger が「アクテイプ」な状態てプログラムが常駐 していますから , 設定したプレークポイン トにたどり着いたり , 十一 キーを押すことて、 ,Turbo Debugger に制御 を戻すことがてきるわけてす。さらに進ん て、 , Turbo Debugger 2.0 ては , Turbo Debu gger 自身を常駐させることて、 , いって、も Tur bo Debugger に復帰することがてきます。 また , デバイスドライバや常駐型プログ ラムは , すてにメインメモリにロードされ ているため , デバッグ情報を「常駐している アドレス」に割り当てることて , そのプログ ラムのシンポルデバッグを行うことがてき ます 0Turbo Debugger 2.0 には , プログラ ムが「常駐しているアドレス」を調べるため のツール (TDDEV. EXE, TDMEM. EXE) が用意されています。 オプジェクト指向プログラミングに対応 すて、に発売されている Turbo Pascal 5.5 はもちろん , 発売が予定されている Turb0 C 十十 ( 本誌 18 頁参照 ) のオプジェクト指向プ ログラミングに対応しています。個々のオ プジェクトのインスタンスを参照 / 変更した り , オプジェクト型 ( クラス ) やオプジェク トの継承を参照することも簡単にて、きます。 今後 , プログラミングの生産性を向上さ せる手段として期待されているオプジェク ト指向がこの強力なデバッガて、サポートさ れたことて , より身近なものとなるてしょ Tu 「 bO Debugge 「 1.0 の機能を継承 もちろん , Turbo Debugger 1.0 からの優 れた機能はすべて継承されています。 Turbo Debugger は , 強力なプレークポイ ントをサポートしており , たんに停止する , というだけてなく , 各種の動作の「トリガ」 としての意味をもたせることがてきます。 そこては , 実行を停止させる以外に , 変数 やメモリの内容を記録 ( ログ ) したり , 間に 合わせのために , C や Pascal の文を実行させ ることがてきます。「トリガ」を引き起こす 条件も , 特定のアドレスを通過するという 以外に , 指定したメモリの内容が変更され たときや与えた式が真になった場合などが 指定てきます。 また , Turbo Debugger< は , 参照したい 変数のところにカーソルを移動させ , 十国キーを押すだけて , lnspecter ウインドウが開き , 変数の内容を参照する ことがてきます。マウスがあれば , その位 置て右ボタンをクリックし lnspecter の項目 をドラッグするだけてす。 lnspecter ウイン ドウは , メモリが許すかぎりいくっても開 くことがてきます。 データが配列て定義されている場合ても , メニューのような形式て表示され , 構造体 て定義されている場合は , 各メンバごとに 表示されます。もちろん , 構造体のメンバ が配列てあったり , 構造体の配列という場 合ても , それぞれの要素を lnspect して , そ の要素について調べたり , 構造体がリスト 構造になっている場合は , ポインタを使っ てリストを追跡することがてきます。 仮想 86 モードの活用 Turbo Debugger は , 80386 の仮想 86 モー ドを使ってデバッグすることもてきます。 仮想デバッグては , 対象となるプログラム が「デバッガ上て実行されているか」「単独の コマンドとして実行されているか」にかかわ らず , まったく同じアドレスにロードされ ます。ロードされるアドレスに不具合が依 存している場合ても , その状況を再現しや すくなります。 80386 のデバッグレジスタを 使うことて , グローバルプレークポイント として , メモリの変更を監視させる場合の 実行速度を大幅に改善することもてきます。 また , CodeViews 2. x 用のデバッグ情報 を Turbo Debugger 形式に変換することて、 , MS-C や MASM て、作成したプログラムをデ バッグすることもて、きます ( MS 形式のオー バレイ , 工ミュレータには対応していな い ) 。また , TLINK や MS-LINKC 作成され た . MAP ファイルの情報をデバッグ情報と して . EXE ファイルに組み込むこともてきま す。

7. 月刊 C MAGAZINE 1990年7月号

TURBO DEBUGGER & T00 [ S2.0 また , MASM モードて、は , MOV AX, [ 0 ] という命令は , 「アドレス 0 の内容」を AX に ロードする , という意味には「なりません」。 これは , MOV AX , 0 と同じコードが生成さ れます。 Turbo AssembIer は , MASM との 互換性を重視しているため , 標準モードて、 は同じコードを生成するようになっていま すが , ldeal モードて、は , より自然な「アドレ ス 0 の内容を AX にロードする」コードが生成 されます。グループ化されたセグメントに 関して発生する問題についても , ldeal モー ドて、あればすっきりと解決されます。 Turbo Assembler て、は , 互換性に配慮し なければならないときのための MASM 互換 モードと , より自然なプログラミングがて、 きる ldeal モードのふたつのモードをサポー トすることて , 自由度の高いアセンプラブ ログラミングをサポートしています。 そのほか Turbo Assembler 2.0 は , 80386 / 486 の 命令セットをフルにサポートしています。 リスト中の行番号や機械語コードの 出力桁幅を個別に指定することがて、きます。 ローカルラベルは , MASM よりも柔軟な形 て、サポートされており , 別のローカルラベ ルを飛び越すこともて、きます。 また , Turbo Assembler の疑似命令や 80 命令や fa 「ポインタを PUSH する命令を , 別 X86 の命令セット / クロック数などが記載さ つ ldeal モードが用意されています 0MASM のいくつかの命令て置き換えて実現してい れたクイックリファレンスマニュアルは , の文法には , わかりにくい点がありますが , ます ( 80186 以上の CPU は , 即値 PUSH の命令 プログラミング時に役立ってしよう。 ldeal モードてはより自然なアセンプラブロ を備えている ) 。同一セグメント内ての fa 「呼 グラミングが行えるように改良が加えられ び出しも ,push cs と nea 「呼び出しに置き換 Turbo Debugger&Tools 2.0 は , このほ ています。 えられます。 MASM との互換性を優先する かにもプログラム開発を支援するためのさ たとえば , ために , NOSMART 疑似命令を指定するこ まざまなツール群が用意されているのて、 , MOV AX, 6CBX] とて , こうした機能を抑止することもて、き より品質の高いアプリケーション開発に威 という書式は , ちょっと見ると「 BX の指す ます。 力を発揮することてしよう。 アドレスの内容を 6 倍したもの」を AX にロー ドする , という意味のような気がします。 に ea 圧ード もちろん , 実際にはそうてはありません。 Turbo Assembler は , MASM と高い互換 ldeal モードては , 性をもっている高速アセンプラてす。しか MOV AX, [BX 十 6] し , Turbo Assembler はたんなる高速アセ と記述します。これならば , 「 BX に 6 を加え ンプラてはありません。 MASM 互換の標準 たアドレスの内容」を AX にロードするとい モードのほかに , より洗練された文法をも うことが , はっきりわかります。 MASM 5.0 以前のサプルーチン List _TEXT SbGMENT ASSUME CS:_TEXT STRUC param savebp DW retadr DW argl DW arg2 DD ENDS param PUB い C func func PROC push bp, sp mov push push ds ax, [bp]. argl mov [bp], arg2 lds ds bp ENDP ENDS シアータモデルでは DD フー ジコードモデルでは FAR NEAR POP POP POP ret func _TEXT END Turbo Assember 2.0 でのサプルーチン LiSt . MODE し SMA しし C . CODE PUB い C func func PROC ARG argl : WORD, arg2: DWORD USES S i , d S ax, [argl] 田 OV lds [arg2] ret func END ENDP TURBO DEBUGGER & TOOLS 2.0 133

8. 月刊 C MAGAZINE 1990年7月号

出力オプションの設定メニュー画面 Fig. 4 ・ Turbo Assembler 20 ■ Turbo Assembler は , MASM 4.0 , 5.0 , 5.1 との高い互換性を保ったうえて , MASM の約 2 倍という高速なアセンプルを実現した アセンプラてす。 Turbo Assembler 2.0 て は , この高速性にマルチパスによる最適化 機能をサポートし , よりパワフルなアセン プラになっています。 マルチノヾスアセンプル Turbo AssembIer 1.0 はレヾスアセンプラ てしたが , Ver. 2.0 て、はマルチパスをサポー トするようになりました。 Turbo Assembler 1.0 や MASM て、は , 前 方参照のある JMP 命令は , SHORT ジャンプ ( 128 バイト以内のジャンプ。生成されるコ ードは 2 バイトてすむ ) て十分な場合ても , 明示的に指定しないかぎりヾイトのコード が生成され , 3 バイト目には本来必要のない NOP 命令が埋め込まれてしまいました。 Turbo AssembIer 2.0 ては , ソースコード を何回も参照することて , こうした不要な NOP を削除することがてきます。 高級言語インタフェイスのサポート 現在ては , アセンプラは , 単独て、使われ ることよりも , 高級言語て書かれたプログ ラムの一部をより効率よくするために使わ れるほうが多いて、しよう 0Turbo Assembler 2.0 は , より柔軟な形て , 高級言語とのイン タフェイスをサポートしています。 MASM 5.0 以前は , C のサプルーチンを 記述するために ListI のように書かなければ なりませんて、したが , Turb0 Assembler< サポートされている高級言語インタフェイ スを用いれば , List2 のようにすっきりと記 述することがてきます。また , このように す場合の引数を指定することもてきます。 命令が拡張されています。たとえば , 記述することて , メモリモデルが変更され メモリモデルの指定も , MS-WINDOWS や PUSH, POP 命令は , 複数のレジスタを同時 た場合て、も , わずかな修正て、すむようにな NOLANGUAGE などが加わり , 幅広い対応 に指定することがてきます。 ります。 が可能となりました。 PUSH AX BX また , Turbo Assembler 2.0 ては , サプ 各種命令の拡張 ルーチンごとに C 形式か , PascaI 形式かを指 それらの関数を呼び出 定することがてき , Turbo Assembler 2.0 ては , いくつかの 132 CMAGAZINE 19 7 ule: 訳 I 正 4 FiIe: pri 「旧 4.0 start Length CI ock コ Sepa ratet # I 正 4 # 17 5b : = > ma i n ( ) 655b : 6f 4 Separate: I 正 4 # 18 5b : ' る 223 rate: ttPR I 4 24 e ロ e ↓ i nt n ; for if (prime(i pr i i ht Widt Cawel 物 lp ( ) Pr inter ( ) Graphi(E ( ・ ) File ( ・ ) ASCI I 」 tion Prof i 1 Tota 1 t i : 1 . 1 D i % Of total : 的 : 1 of 1 2. 12 ー正 4 # 15 sæ 1 # ー正 4 # 18 11 RI 正 4 sæ 11 % Fig. 5 レポート出力の例 Turbo Profiler Version 1.0 Thu May 17 13 : 56 : 48 1990 Program: A:YTPROFYPRIMEO. EXE File prime0. c Time Counts / * Copyright (c) 1990 , Borland lnternational * / / * Program for generating prime numbers using Euc lid 's method * / int primes[1000]: #define MAXPRIMES 1000 main() int lastprime, curprime; primes[O] primes[l] lastprime curprlme printf("prime Xd = XdYn". 0. primes[0]) : printf("prime Xd = XdYn" 1 , primes[l]): while(curprime く MAXPR IMES) for(j - lastprime; j 十十 ) if((curprime % primes[j]) curprime 十 = 2 : b reak : lastprime) continue; lastprime 十十 : printf("prine Xd = Xd%n" lastprime, curprime) : primes[lastprine] curprlme; curprime 十 = 2 : 0.0000 1 0.0000 1 0.0000 1 0. 0000 1 0. 0000 1 0.0176 1 0. 0165 1 0. 0087 500 0.0091 499 0.3093 15122 0.0056 333 0.0055 333 0.0084 499 0.0055 333 0.0027 166 2.8678 166 0.0030 166 0.0026 166 0.0000 1 POP BX AX また , CPU が 8086 の場合ても , 即値 PUSH

9. 月刊 C MAGAZINE 1990年7月号

・関数 qso 「 t と bsreach の比較要素は , void * て、渡される ・値て、返される st 「 uct の取り扱い方法が変史 されたため , Turbo C 2.0 て、作成したラ イプラリとリンクすると , 間題が発生す る ・ C 十十は型の検査が厳しいため , プロトタ イプの型検査などて、 , Turbo C 2.0 て、は 発生しなかった警告が発生する ・ Turbo C 2.0 とは , レジスタ割り付けに 相違があるため , 特定のレジスタ割り付 けを想定して記述したインラインアセン プラは動作しない可能性がある プラグマの追加 従来 , 関数 main( ) の前処理を変更しよう とすれば , スタートアップコードに修正を 行っていたが , 新たに追加された sta 「 tup プ ラグマにより , 最大 192 の関数をスタートア ップ時の処理として指定することが可能に なった。同様に , 関数 main ( ) の後処理を行 う関数を指定するために , exit プラグマも追 加された。 ほかのプラグマとして , 次のもの が追加された。 ・ argsused : 関数定義間の相違などにより 生じた警告メッセージの無効指定 ・ option: コンノヾイルオプションをプログ ラム中て、指定 ・ in line : インラインアセンプリのコードを コンノヾイラに孑旨疋 ・ warn : 無視を行う警告メッセージの指定 ・ save 「 egs : 大きな関数て、の , レジスタ値 の勝手な変更の制限 ドキュメンテーション Turbo C 2.0 のマニュアルカ℃言語のよい 解説書になっていたのと同様に , Turbo C 十十に付属するマニュアルが , C 十十のよ い言語マニュアルおよびチュートリアルに なることを願っている。ポーランドジャパ ンの翻訳作業にも期待したい。 また , ポーランド社から C 十十が販売され ることて、 , C 十十 2.0 の解説書が増えること も期待て、きるだろう。 プロクラマーズ プラットホーム Turbo シリーズの従来の統合開発環境を 発展させ , 「プログラマーズプラットホーム (Programmer's Platform) 」と名づけた。次 にその特徴を紹介しよう。 工テイタ ・マルチファイル , マルチウインドウがっ いに実現された。ファイルやウインドウ の数に制限がない なお , ウインドウは , オーバラッヒ。ングウインドウて、あり , ウ インドウの移動およびサイズ変史が可能 て、ある。また , ウインドウ間のカット & べーストやヘルプウインドウのコードの コヒ。ーが可能て、あり , クリップボードも 用意されている。さらに , 編集可能なフ 工デイタがマルチファイル , マルチウィ えて , プラットホームを独自に設定て、き (Turbo Editor Macro Compiler) に ロやキーの定義を許し , それを TEMC Macro Language) は , ユーザによるマク マクロ言語 TEML(Turbo Editor トされた。 ・各種マウス (MS,Logitech など ) がサポー イルサイズの制限はない ァイルには , ディスクサイズ以外にファ イルサイズはディスクサイズ以外に制限要 タの機能まて、には達したようて、ある。ファ 能により , 少なくとも , 日本の市販工ディ オーバラッヒ。ングまて、可能だ。これらの機 サイズ , 位置とも変更可能になり , さらに た 0Turbo Debugger と同様に , ウインドウ インドウ間のカット & ペーストも可能になっ の市販工デイタて、は常識になっている , ウ ンドウになったのはうれしい。また , 現在 因はない マウスのサポートもオーバラッヒ。ングウ インドウて、は有用だろう。ウインドウ番号 が隠れていてもウインドウの一部が見えて いれば選択て、きるわけだ。 また , ファイル位置変更は , 賢いキャッ シュ機構 (intelligent caching) により , どこ へて、も一瞬て、移動て、きるという ( 「一瞬 (in stantaneus) 」とは何秒ぐらいなのか試してみ たいものだ ) 。 カット & ペーストて、は最大 64KB のクリッ プボードを使える。 マクロ言語は , ASCII ファイルとしてエデ ィットコンパイルし , プログラマーズプラ ットホームに組み込むことて、使用可能にな T 「 ansfe 「オプション プログラマーズプラットホームから , ほ かのプログラムを起動するとき ( たとえば , Turbo Assembler など。インラインアセン プラを使用すると , 指定のアセンプラが自 動的に起動される。 TASM, MASM が使用 可能 ) のオプションをあらかじめ設定する と , プログラムの出力をメッセージウイン ドウに取り出せる。プログラムの結果て、あ るトランスフア出力て、 , 工デイタからスペ ースキー , またはカーソルキーて、ステップ するたびに , 該当するファイルを自動的に オープンし , 該当する行へカーソルを移動 してくれる。いままて、 Turbo C て、しか利用 て、きなかったタグジャンプが , トランスフ アオプションの設定て、 , Assembler や grep な どの出力に対しても可能になった。 Transfer メニューて、選択されたプログラ ムを実行するときには , プログラマーズプ ラットホーム自身のメモリ使用量は自動的 にスワップされ , 削減するのて、 , メモリ不 足の問題は起きにくい プロジェクトマネージャ 組み込みの make を使ったプロジェクト管 20 CMAGAZINE 1990 7

10. 月刊 C MAGAZINE 1990年7月号

理も高機能化された。まず , 設定画面は , 従来の ASCII ファイルの編集から , ダイアロ グボックスを使ったビジュアル形式になっ すべての C プログラムに , 使用するコンパ イラフラグを指定し , さらに特定のフラグ を特定のファイルごとに設定することも可 能て、ある。プロジェクトにファイルを追加 するには , カーソルをファイル名に移動し て選択する。 また , 自立型の make もすこし賢いものに なった。従来 , 複数の C ソースファイルがあ ると , ファイルの数だけ繰り返しコンパイ ラを起動していたが , 新バージョンの make て、は , 1 回の起動だけて、すむ。目立たない変 史だが , 大型アプリケーションのターンア ラウンドの短縮に貢献する。 そのほか そのほかに , 次の特徴があげられる。 ・ハイバーテキスト風のヘルプはすて、に流 行語になっているが , 便利なのはエディ タがマルチファイル対応になり , ヘルプ 画面からの関数コヒ。ーが可能になったこ とだ。従来のヘルプ画面は , 工デイトを 開始すると同時に見えなくなってしまっ たが , マルチウインドウ化によってこれ も解消されている。 ・クラスをインスペクト可能な組み込みデ バッガが搭載された。 Turbo C 2.0 と同 様に , 工デイタ環境から実行可能な組み 込みデバッガがサポートされている。も ちろんオプジェクトデバッグをサポート し , クラスもインスペクト可能となって また , このプログラマーズプラットホー ムの使用法を学ぶための TCTOUR というプ 、 0 Turbo C 十十のもうひとつの特徴に V 日 OOMM ログラムも用意されているようだ VROOMM (Virtual Run ー time Object- Oriented Memory Manager) がある。これ は , 大型のプログラムを実行するためのオ ーバレイのひとつの方法を提供するものて , 現在 , 多数のプログラマが格闘している , MS ー DOS の 640KB の壁を崩すものとして期 待される。 V 日 OOMM のオーバレイ ボーランド社自身は , VROOMM 技術を かなり前に開発し , 同社の Quattro Pro に採 用していた。データベースなどの大型アプ リケーションて、は必須だろう。 Turbo C 十十て、は , この技術の採用によ って , 高機能化を図ると同時に , プログラ ム開発能力を強化するためューザへも公開 された。べンチマークを待たなければなら ないが , 場合によっては , MS-C 5.1 のオー バレイとは比較にならない好結果が期待て、 きる。 VROOMM のユーザは , たんにどのモジ ュールをオーバレイするかだけを指定する。 これは MS リンカて、の方法と同じだ。もちろ ん VROOMM を効率よく使うには , 各モジ ュールサイズと同時に , 各関数をどのモジ ュールへ配置するかを考えながら , モシュ ールの設計をしなければならない なお , VROOMM て、は , EMS のような拡 張メモリとディスクをスワップデバイスに パッケージは , Turbo C 2.0 と同様に バッケージ構成 ーションについても触れてお ' 最後に , パッケージ構成とドキュメンテ 終わりに 使用するようだ。 フ。 Turbo Debugger & T001S 2.0 が付属す ョナルバージョンには , すて、に発表ずみの ョナルとて、構成されている。プロフェッシ Turbo C 十十と Turbo C 十十プロフェッシ る。値段はそれぞれ 199.95 米ドルと 299.9 米 ドルて、ある。 MS-C 6.0 ユーサへ Turbo C 2 . 0 に付属の tdcnvrt は , MS- C 6.0 の CodeViews 情報を変換て、きない が , Turbo C 十十プロフェッショナルには , MS-C 6.0 の CodeViews 情報を変換可能な tdcnvrt が付属するらしい , という情報もあ る。 C 十十の将来 C 十十は , C プログラミングの経験があっ ても , 簡単に理解て、きるとは思えない。ポ ーランド社のフィリップ・カーン社長自ら , 「 C 十十は , 暗号を解いているようだ」と語っ ている。たんに優れた C として使うのなら , 簡単だろうが , C 十十の設計思想を理解し , 使いこなすには , かなりの新たな学習が必 要て、あろう。 しかし , C プログラムも , C 十十コンパイ ラを使って , ほとんどコンパイルが可能な のて、 , プログラミング概念を一挙に根底か ら変更しないと使用て、きないような言語て、 はないのが救いだ。この点が Smalltalk など の言語との本質的な違いてある。 このように , 筆者を含めた多数の C プログ ラマが待ち望んて、いた C の後継言語が , ポヒ。 ュラーなコンパイラを発売しているメーカ ーから発売されたことは , 今後の C 十十プー ムを予想させるものて、あり , 歓迎すべきこ とて、あろう。 しかし , マイクロソフト社とポーランド ほとんどのコンパイラメーカ 社を除いた , ーが , すて、に DOS ェクステンダをなんらか の形て、サポートしており , また , ポーラン ド社が OS/2 や MS-WINDOWS のサポート を表明してから久しいにもかかわらず , MS -WINDOWS, OS/2, DOS ェクステンダへ のサポートが行われなかったのは非常に残 念て、ある。 速報 Turbo C + + 最新レポート 21