GNU - みる会図書館


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

1. 月刊 C MAGAZINE 1990年8月号

0 朝 0 ① 0 0 レポート 最新い U 移植 述べるとともに , GCC の TRONCHIP への移植展望についても簡単に触れる。 第 1 回である本号では , X68000 への GCC と GNU ューティッティの移植を中心に 本誌 7 月号でお伝えできなかった GUN 移植レポートを 2 回に渡ってお届けする。 GCC ( X68000 ) Section 1 近藤誠之 はじめに GNU CC は GNU プロジェクトにおいて Rechard Mark StalIman たちによって書か れ , Free Software Foundation (FSF) か ら配布されている , いくっかの CPU, いく っかの OS に対応した , ANSI 規格に準じた 高性能かつ高機能な C コンパイラてす。もち ろん , みなさんご存じのとおり X68000 の Human68k 上ても動作しています。 現在の X68000 近藤版 GNU CC( 実は , 私 がそういったわけじゃないんだけど , そう 呼ばれています。以下 GCC) は , 次の特長 を備えています。 ( 1 ) XC に含まれている as. x, lk. x, cash. x のコマンド , ヘッダファイルとライプ ラリがそのまま使える ( 2 ) XC やアセンプラて作ったオプジェクト とリンク可能。その逆も可 ( 3 ) 漢字コードとしてシフト JIS コードが使 ( 4 ) コマンド行て , ワイルドカードとイン ダイレクトファイルが使える (5)as. x, lk. x に対していくつかのオプシ ョンが指定てきる (6)Mad Player 版 GNU make と相性がよ この GCC が X68000 にどのように移植され たかは後ほどお話するとして , まず , なぜ移 植したのかその動機から説明しましよう。 GCC 移植の動機 私にとっては懐かしい話になりますが , 私が X68000 を手に入れた 1987 年当時は , X68000 のプログラミングッールといえば , づンドルされた X ー BASIC と , ェデイタ , 「福 袋」に入っていたマニュアルもないアセンプ ラとリンカくらいてした。当時の X68000 ユ ーザは , X ー BASIC やアセンプラてプログラ ミングしていたのてすが , その多くが「 C 言 語があったなら」と思っていたはずてす。 1987 年末に C CompiIer PRO-68K ( 通称 (C) が発売されましたが , 残念ながら , 期 待はずれのひどいコンパイラてした。いち おうアセンプラ出力が出せること , ライプ ラリのソースが公開されていたことから , XC 自身のバグを避けたり , ライプラリのバ グを取ったりしてなんとか使いましたが , やがては , プログラミングの本質てないそ のような部分に苦痛を感じはじめました。 「この状態から脱却するためには , 新たな C コンパイラを使うしかない / 」と強く思っ た私は , 幸いなことに GCC のソースをもっ ていましたのて , 「よ ~ し。目にものを見せ てやるっ / 」と密かに誓ったのてす。 CC の移植 GCC は非常に優れた移植性デザインが施 されており , 原則的に機種依存の 4 つのファ 最新 GNU 移植レポート 81

2. 月刊 C MAGAZINE 1990年8月号

最新 GNU 移植レポート Section 3 の問題てあり , 日本語化されなくともかま あります。ツールの移植と日本語化とは別 っとやそっとては日本語化てきないものも く場合もありますし , e?grep のようにちょ バイナリ列と見なすことによってうまくい GNU diff などのように , 漢字をたんなる とサポートしないようにしています。 使わないようにすべきとの配慮から , わざ アクセスのしやすさを著しく阻害するのて、 にしています。とくに漢字のファイル名は . てす。筆者は基本的に漢字は無視すること ドと衝突することがあり , 扱いがたいへん 区切り邸 \ 〃やカギカッコ [ 〃と刃〃などのコー わないツールを無理に漢字対応にするのは 労多くして得るものは少ないと考えます。 りに 終 参考にはなると思います。 ら UNIX プログラムを移植しようという方の いては詳しく触れませんてしたが , これか 根づくものばかりて、す。具体的な対策につ はなく , UNIX と Human68k の OS の違いに た。これらは GNU プログラム固有の問題て、 について , おもなものを簡単に紹介しまし GNU プログラムの移植て、問題となった点 GCC (TRONCHIP) 吉田英樹 販 TRONCHIP TRON (The Realtime Operating Sys tem Nucleus) プロジェクトの一環として , 独自のアーキテクチャをもっ , TRONCHIP というマイクロプロセッサが提唱されてい る。 TRONCHIP とは , プロセッサのアーキ テクチャを規定する共通仕様をさすことば て , 特定の CPU の商品名てはない 実際には , 富士通・日立・東芝・沖・松 下などから , TRONCHIP 仕様に基づいた 32 bit プロセッサが数多く独自に発表され , い くつかはすてに市場に出回っている。 EWS などの用途に特化された現在の RISC とは異なり , 文字どおりの「汎用高性能マイ クロプロセッサ」を目指していることから機 器制御 , パソコン , ワークステーションな ど幅広い用途ての利用が期待されている。 この TRONCHIP 用には , チップのメーカ ーやサードバーティーのソフトハウスなど 88 CMAGAZINE 19 8 の手によっていくつかの C コンパイラが作成 されてはいるが , 以下のような問題点がある。 ( 1 ) ソースが公開されていない ( 2 ) 商品て、ある ( 3 ) コードの実行速度が低いものが多い C の ONCH 甲への移植 やはり , ソースを見ることがてき , 配布 もてきて , ある程度性能がいいものが望ま れる。そのために行われたのが , GCC の TRONCHIP への移植てある。 おもな特長は次のとおりて、ある。 ( 1 ) ソースが公開されている ( 将来的には FSF による正式配布予定 ) (2)TRONCHIP の命令をいかした高速なオ プジェクトコードを生成する (3)ACB,SMOV などの高機能命令や多段 間接アドレッシングモードの使用を , コ ンパイルオプションによる制御てきる TRONCHIP を搭載したワークステーショ ンはまだ発表されていないのて , ほかのプ ロセッサを使ったマシンの上てクロスコン パイルを行い , 生成されたオプジェクトコ ードをなんらかの方法てターゲットマシン に転送する , という手順て利用することに なる。 GCC 自体は , 通常の UNIX マシン上 てあれば , ほとんど機種を問わず動作する のて , 開発環境の自由度はかなり大きい ただし , ここて問題となるのは GCC が出 力したアセンプラソースからバイナリを生 成するアセンプラてある。現在のところ TRONCHIP 用 GCCC は , Microtec 社のア センプラを利用しているが , これは商品て ありどの環境ても使えるわけてはない。 の問題を解決するために , GAS(GNU As- sembler) の TRONCHIP 上への移植も行わ れては . いるが , これは相当手間がかかり , 今のところ完成のメドは立っていない 現在の TRONCHIP 用 GCC は , Sun などの 既存のマシン用の GCC のように簡単にイン ストールはてきず , 利用環境に応じてユー ザがかなり手を加える必要があるものとな っている。それても , TRONCHIP 用のコン パイラとしては最高レベルのコードを出力 するものてあり , 各種の実験のプラットホ ームとしても利用価値が高いと思われる。 訂正とお詫び 7 月号付録収録 GNU ダイジェスト (%GNU D*BULL-8.lNF) に下記の誤り がありました。下記のとおりに訂正す るとともに , お詫び申し上げます。 * JUG へ * 往復葉書か封書の場合は * 返信用切手同封 * で 正 *JUG ( FD 中心の配付 ) へ * 290 円分の 返信用切手同封 * で 〒Ⅱ 2 東京都文京区大塚 3 ー 42 ー 8 鈴木ビル 2 田 JUG-CP/M 事務局

3. 月刊 C MAGAZINE 1990年8月号

植の歴史と未来 さて , 私が最初に GCC を X68000 へ移植し たのは ' 88 年の 9 月から 10 月ごろてした。バー ジョンは 1.21 。やけに時間がかかってます が , この期間て重要な GCC 移植ノウハウの ほとんどが確立されました。なお , このバ ージョンはどこにも , 誰にも公開されませ んてした。 次に移植したバージョンは 1.28 て ' 88 年の 11 月のことてす。実は 1.30 まて、のソースを もっていたのてすが , MC68000 用てはバグ があり , セルフコンパイルてきませんて、し た。そこて、安定動作した 1.28 を移植しまし なお , このノヾーションからノヾソコン不ッ トや , 手渡して公開するようになりました。 ただし移植した部分はプリプロセッサとコ ンパイラ本体だけてドライバは含まれませ んて、した。 その後 Ver. 1.31 は ' 89 年 1 月に , そして 1.34 は ' 89 年 5 月にそれぞれ移植しました。 の 1.31 には Mad Player 氏が gcc. x を作って くれました。それを利用された方も多いと 田います。 私が gcc. x も含めて GCC をほば完全に移植 てきたのは ' 89 年 10 月に移植した 1.36 からて、 す。そして ' 90 年 3 月に移植した 1.37.1 が現在 の最新バージョンとなっています。 GCC の移植には , 自分自身のまちがいに よるものや , ときには XC のライプラリの問 題に起因する , わけのわからない現象に悩 まされました。しかし , 移植自体は楽しい 作業てした。なにより GCC が X68000 て、使え るようになることが大きな喜びてした。そ れが移植の原動力になったのはまちがいな いと思います。 GCC 移植の最初の目的は , たんに自分が 使いたいという願望を満たすためてした。 当時はそれほど需要があるものだとは思っ ていませんてした。しかし , 今ては多くの 人が GCC を利用し , フリーソフトウェアを 作ったり , さまざまなソフトウェア , とく に GNU 関連のものを X68000 に移植していま す。私自身も , この恩恵て作業環境が整っ Section 2 はじめに 前田薫 最新 GNU 移植レポート も , そうあるよう期待しています。 ださった皆様に感謝しています。また今後 そのようなプログラムと労力を提供してく てきています。これは喜ばしいことてあり , G ユーティリティ ( X 68000 ) Human68k は MS-DOS ライクなファイル システムを有し , コンパイルをやり直すだ けていくっかの MS ー DOS 上のファイルユー ティリティが使用てきます。また ,Human68 k は X68000 のメモリアクセスを ( セグメント の導入などて、 ) 制限しませんから , UNIX な どからのユーティリティの移植も比較的容 易に行えます。本稿ては Human68k に GNU のユーティリティを移植する際に問題とな った点 , くふうした点などを紹介します。 これらの問題点は GNU ューティリティのみ ならず , ほかの UNIX ツールの移植時にも参 考になるはずて、す。 コンバイラ プログラムの移植てもっとも問題となる のがコンパイラてす。 GNU ユーティリティ にかぎれば , C コンパイラさえあればすべ てコンパイルてきます。しかし , Human68 k 上て動作する C コンパイラは非常に少な く , 筆者の知るところては C CompiIer PRO ー 68K ( 以下 XC と呼びます ) が唯一の市販 C コ ンパイラてす。ところがこの XC にはバグが 多く , GNU ューティリティのコンパイルて 使用てきないことが多々ありました。そこ てコンパイラとして GCC(Section 1 参照 ) を 使う結果になりましたが , GCC にはライプ ラリ関数がないためライプラリ関数は XC の ものを使用しました。 アイルシステム Human68k のファイルシステムは MS ー DOS を真似て作られており , 事実 PC98 の MS -DOS とフロッピーディスクが互換て、きま す。ところが UNIX ツールの移植を考えた場 合 , そもそも MS-DOS のファイルシステム は CP/M のそれがべースになっていますか ら , UNIX のファイルシステムとの違いが数 多くあります。これらの違いのひとつひと つは大きな問題とはならないような気がし ても , プログラムの移植となると変更すべ き箇所を探す作業は意外な負担になってき ます。以下 , 思いっくかぎりの不都合を考 えてみます。 ファイル名 Human68k< はファイル名はドライプ 名 , 18 文字のべース名および 3 文字の拡張子 から成っています。ファイル名に使用て、き る文字は非常に制限されています。英文字 の大文字と小文字が使えるのはよいのてす が , 大文字と小文字を区別してくれません。 また , べース名に 18 文字使えるといっても , 実際に有効 ( ファイル名として区別される ) となるのは 8 文字しかありません。これらに 最新 GNU 移植レポート 85

4. 月刊 C MAGAZINE 1990年8月号

1990 年 8 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 2 巻第 8 号通巻 11 号 1990 年 2 月 2 日第 3 種郵便物認可 MAGAZINE C マガジン 提携・米国「 LANGUAGE 」誌 / 監修・石田晴久 0 当 0 C マカ特別プロシェクト オリジカレ C コンヾイラ PragmaC 制作 ④構造制御文 提携記事・ Skin and Bones C 言語入門講座・構造体 ( 2 ) 最新 GNU 移植レポート ・ GCC ( X68000 ) ・ GCC (TRONCHIP) ・ GNU ユーティリティ (Human68k) アルゴリズムとテータ構造入門・連結リスト ANSIC : m 咄・関数プロトタイプ 特別付録 : 52HD ・オリジナル 00S 工クステンタ (EXE/286) ・サンプレ版総合コンソールライプラリ ( CCF ) ・クラフィックエテイタ (CSET261 ) ・ LHa 「 c ユーティリティ (SLHARX) ・掲載全ソースプログラム 寺別インタピュー Steve 」 Ohns ① n ( Ⅱ ) ボータフル c コンヾイラ pcc の制作者 恃集 : DOS 工クステンタと C プログラミング art I ・ DOS 工クステンタ概論 / Pa 杙Ⅱ・オリジナル DOS 工クステンダの作成

5. 月刊 C MAGAZINE 1990年8月号

1990 年 8 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 2 巻第 8 号通巻 11 号 1990 年 2 月 2 日第 3 種郵便物認可 。 9 。 8 ~ 。。 CONTENTS Steve J0hnson(fl) GUI の基礎の基礎 巻頭インタビュー 1 2 3 ボータブル C コンノヾイラ PCC の制作者 Programming 側 Purpose setting the standard 』 p J. Plauger Skin and Bones ・ Digest 0f COMPUTER LANGUAGE C: THE LANGUAGE WA LOVE TO HATE フリーソフトウェア最新レポートく第 9 回〉 c に役立つユーティリテイソフト野口雄平・・ Book Review オリジナル C コンヾイラ制作プロジェクト p 「 agmaC く第 4 回〉構造制御文藤井保則・ 読者参加企画 。 = DOS 工クステンタと C プログラミング・ part I DOS 工クステンダ概論 Section 1 DOS 工クステンダのメモリ管理と High C によるプログラミング 塚本吉彦 Section2 286 用 DOS 工クステンダ DOS/16M 森誠 Section 3 DOS 工クステンダ共通インタフェイス森誠 part Ⅱオリジナル DOS 工クステンダの作成京都マイクロコンピュータ アルゴリズムとテータ構造入門く第 3 回〉連結リスト近藤嘉雪 最新 GNU 移植レポー GCC ( X68000 ) 近藤誠之 GNU ユーティリティ (Human68k) 前田薫 GCC(TRONCHIP) 吉田英樹 実践 C プログラマ養成講座く第 11 回〉マルチタスクの都合 三田典玄の C の道具箱 く第 2 回〉汎用画面作成ツール 2 ) 豊国永健・ 応用 C 言語 恥すかしながらドシリましたく第 9 回〉ソフトゥェア体系の社会的構築とバベルの塔岩谷宏・ C 言語フォーラム ワンポイントプロクラミング講座く第 8 回〉文書ファイルの見出し一覧プログラム上田哲ニ はじめて学ぶ C プロクラミングく第 11 回〉構造体 ( 2 ) 高木聡 / 山崎信行 C 言語入門講座 ANSI C : mo 田く第 2 回〉関数プロトタイプきだあきら Part1 GNU 奮闘記く第 5 回〉簡単な GNU c の改造方法の吉野智興・ Conference Room Part 2 RK 文字列検索アルゴリズム阿波浮生・ part 3 MS - Windows 自動実行プログラム菅野健 part 4 読者投稿プログラムグラフィックエテイタ「 CSET261 」渡辺敏朗 C-MAGA News Square BOOk Shop Report Readers Room 付録ティスクの内容 EDITOR'S ROOM ・本記事中のプログラム名 , システム名 , CPU 名は一般に各メーカーの登録商標てす。本文中ては TM , ⑩マークは明記していません。 ・本誌に掲載されたすべてのプログラムは著作権法上個人 ( 使用する目的以外て無断て複製することを禁じられています。 表紙・イラストレーション・秋山育 / デザイン・持田哲 COMPUTER LANGUAGE 提携記事 ・・ 36 ・・ 43 72 短期集中連載 ・ 89 ・・ 93 ・・ 103 ・・ 106 110 122 ・・・・ 126 ・・・・ 132 134 135 145 147 148 156 159 160 lnformation from Compiler Makers C MAGAZINE PubIisher: Masayoshi Son Publishing Director: GO 「 0 Hashimoto Editor-in-Chief: Takashi Kikuchi Director of Marketing: RYO Tanii Manager Of SaIes and Adve 「 tising. YOShino Goshima Editorial and Business Offices : NS Takanawa Bldg. , 2-19-13 , Takanawa, Minato-ku, TOkY0108 , Japan Ed 0 ⅱ引 Division(Tokyo) : Phone ( 03 ) 5488-1318 sales Division(TOkyo) : Phone ( 03 ) 5488-1360 Advertising Division(TOkYO) : Phone ( 03 ) 5488-1365 Advertising Division (Osaka) : Phone ( ) 264-1471 Copy 「 ight ⑥ 1990 SOFTBANK Corporation, TOkYO, 齟 rights reserved : no materialin this publication may reproduced, in whOle orin pa 「 in any from without permission. Printed in Japan

6. 月刊 C MAGAZINE 1990年8月号

0 ティ容のお知らせ ' 90 年 8 月号特別付録 ( 5 〃 1.2M 8 セクタ / トラック MS-DOS フォーマット ) には , 次の プログラムが収録されています。 ①付録ディスクの説明 README ( テキストファイル ) ②オリジナル DOS 工クステンダ 使用可能ディスク容量が 660K バイト以上 すのて , 解凍してからご使用ください した。自動解凍圧縮ファイルになっていま ダの作成』の関連て収録することがてきま ミング PartII オリジナル DOS 工クステン 本誌特集「 DOS 工クステンダと C プログラ DOS 工クステンタ オリジカレ て , ファイル名を変更し再度収録しました。 指摘を X68K ューザの方から受けましたの ファイル名に使われていると読めないとの INF ) と同じものて、すがー〃 ( マイナス ) が て、収録した GNU ダイジェスト (BULL-8. BULL8. TXT は本誌 ' 90 年 7 月号特別付録 トファイル形式て、収録したものて、す。 MOKUJI. TXT は「本誌目次』をテキス す。 ワープロソフトても読み込むことが可能て、 TYPE コマンドあるいはお使いのエデイタ , キストファイル形式て、すのて、 , MS-DOS の すのて、必ずご一読ください 0README はテ のページより詳しい説明が収録してありま README( 付録ディスクの説明 ) には , BULL8. INF ( テキストファイル ) ⑧ GNU ダイジェスト MOKUJI.TXT( テキストファイル ) ⑦本誌目次 YCMAGA くディレクトリ〉 ⑥本誌掲載プログラム SLH.COM ( 自動解凍圧縮ファイル ) ⑤ LHa 「 c ユーティリティ YGRPHED くディレクトリ〉 ④グラフィックエデイタ CCF. EXE ( 自動解凍圧縮ファイル ) ③サンプル版総合コンソールライプラリ E. ( 自動解凍圧縮ファイル ) あるディスクを用意し , DOSEXE. EXE を コピーします。コヒ。ーしたドライプ上て、 DOSEXE. EXE を実行してください DOSEXE /x ( x は小文字 ) 解凍後に生成される README. DOC( 使 用条件など ) , EXE286. DOC(EXE286 のマ ニュアル ) , PM286. DOC ( PM286 のマニュ アル ) をご一読のうえご使用ください サンプレ版 総合コンソールライフラリ 本誌 ' 90 年 7 月号 TC ー MAGA News Square 』て、紹介した C 言語総合コンソール ライプラリのサンプル版を株ティップスの ご協力により収録いたしました。自動解凍 圧縮ファイルになっています。ファイルを 解凍した後 , ご使用ください。 使用可能ディスク容量が 468K バイト以上 あるディスクを用意し , CCF. EXE をコヒ。ー します。コヒ。ーしたドライプ上て、 CCF. EXE を実行してください CCF 解凍後に生成される README. DOC が使 用条件などを記したドキュメントファイル , SAMPLE. DOC がサンプル版総合コンソー ルライプラリの関数リファレンスマニュア ルてす。デモプログラムもいくっか用意さ れていますのて , ご利用ください グラフィックエテイタ MS ー DOS のエスケープシーケンスを利用 した簡易アニメーション作成ツール CSET ( 渡 辺敏朗氏 (Wai ・ Wai-NET 佐渡 ) の投稿プロ グラム ) を収録しました。詳しくは本誌掲載 記事「読者投稿プログラムグラフィックエ デイタ「 CSET261 」』に譲ることにします。 GRPHED ディレクトリの下に CSET と HONMON というディレクトリがありま す。 CSETi' ィレクトリには CSET261 のプ ログラムが収録されています。なお , CSET ディレクトリの下の CSET. DOC ファイルが CSET の詳細マニュアルとなっていますのて、 ご一読ください。 HONMON ディレクトリ には掲載記事関連のプログラムが収録され ています。本誌と併せてご利用いただけれ ば幸いて、す。 LHa ℃ユーティリティ 本誌 ' 90 年 4 月号特別付録に収録した高圧 縮書庫管理プログラム LHarc を簡単に使う ためのユーティリティ SLHARX を吉本睦歳 氏のご協力により収録しました。自動解凍 圧縮ファイルを解凍してからご使用くださ 使用可能ディスク容量が 54K バイト以上あ るディスクを用意し , SLH.COM をコヒ。ー します。コビーしたドライプ上て、 SLH .COM を実行してください SLH 固 解凍後に生成される SLHARX. DOC がド キュメントファイルてす。 一軏のフんご 使用ください。なお , このプログラムは PDS て、はありません。ドキュメントに明記され た著作権者のコメントに従ってご使用くだ 本誌掲載プログラム サプディレクトリ \ CMAGA の下に記事別 のディレクトリがあり , それぞれの記事に 関するプログラムを収めました。 : インフォメーション : 自動実行プログラム : RK 文字列検索アルゴリズム : GNU 奮闘記 STARTC : C 言語入門講座 : ワンポイントプログラミング : 応用 C 言語 : アルゴリズムとデータ構造 PRAGMA : PragmaC プロジェクト : GUI の基礎の基礎 INFO APP RKS GNU OPPK OUYOU ALGO (1)KLSüJ : 特集 GUI ディスク内容のお知らせ 159 記事と README を参照してください おのおののプログラムについては , 関連

7. 月刊 C MAGAZINE 1990年8月号

には RTL は処理単位ごとにまとめられ ,insn TabIe 1 Mode の定義 という内部表現にされて処理されます。 モ ド List 1 が意味のない非常に簡単な関数を Qlmode 最適化しないてコンパイルして得られた insn 印 Hlmode に実際のアセンプラソースを対応させたも のてす。オペランドはこの解説にないもの Slmode が出てきていますが , 英語の単語に近いの 団 Dlmode て理解は容易てしよう。 ヾ ccO ″は 68000 てのコンディションコード レジスタに相当し , ゆ c クはプログラムカウ ンタてす。分岐は「表現」をに•set" することて行われます ca には Q ode の •set" call 川て , リターン値が「 eg 番号 0 に されるという表現てす。 List 1 を見ると d3 , つまり「 eg 番号 3 のは ずの「 eg が番号 56 になっています。これは RTL を最終段階てない仮想段階て出力させてい るためてす。 すてに仮想てないレジスタは「フレームボ インタ」と「関数の戻り値」を格納するレジス タて , これらのレジスタと GCC 独自のヾ asm ク Fig. 2 RTL の具体例 ( 2 ) 文て指定されたレジスタは , 仮想コードの 段階からあらかじめ物理レジスタ番号をも っています。 ただし物理レジスタてあるからといって 最適化しないことはありません。 asm 文て、予 想と違うコードが生成されて驚くのはその せいてす。 この仮想コードの段階てコンパイラは , これらのハードに依存したレジスタと , そ れ以外ては無数にレジスタがあると仮定し た上てコードを生成しコンパイルします。 この段階まてがソース言語依存部分てす。 したがって , G 十十のように GCC のフロン トエンドとして , この RTL を生成するフロ ントエンドを作成すれば , 別の言語のコン パイラを作成することも可能なはずてすが , ソースのコメントを見てみますと , 「これは C ては使わないからインプリメントしていな い」などの記述も散見されますのて実際には 難しいのてしよう (GNU ダイジェストには GNU Pa al の話が掲載されていましたが , 内容 1 byte size integer の表現 (char) 2byte size integer の表現 (short int) 4byte size integer の表現 (int) 8byte size integer の表現 (long long int) Fig. 1 RTL の具体例 ( 1 ) int int-var; ー→ (mem:Sl (symb01-ref:Sl ("int-var"))) この文字列に シンボル 4 ' ”がつけられて 4 バイト整数 実際のアセンプラ ソースになる メモリ (set(reg:Sl 0 ) (plus:SI(mem:Sl(plus:SI(reg:SI 14 ) (const-int 8 ) ) ) (mem:Sl(pIus:Sl(reg:Sl 14 ) (const-int 12 ) ) ) ) ) 関数 set のソースと insn 表現に実際のアセンプラソースを加えたもの LiSt int int_var; set ( ) register int x; if (int_var ニ e 1 S e = 1 の Conference Room 127

8. 月刊 C MAGAZINE 1990年8月号

いや ( eaders' R00 特集ワープロを活用する " ビジネ蚤書孝クアラ術 一 " 第 2 特集拡張ボードでパソコンが ・変わるパソコンハイメア宣一 ソフトウェア最前線桐 >D 「・ 3 〈管理工学研究所〉 ・いま買って後悔しないスタンダードプリンタ モニタブレセント 綴じ込みの葉書でご応募ください。 High C 386 Ver. 1.6 3 本 MIFES Ver. 5.0 3 本 提供 : テックソフト & サービス株 提供 : メガソフト株 MIFESver5. O MetaWare• コンピュータ時代を読むトレンド・マカジン 〔崩 p 町 8 月号発売中定価 600 円 ( 税込 ) ー、 50 PC-98RA 以上 PC ー 98 用 C FIakes & MiIk 2 本 Computer LANGUAGE 1 冊 ライプラリ & ユーティリテ集 提供 : C マガジン編集部 提供 : 有工クゼック な、 M ーーん 特集もうひとつのパソコン 業 事 ( 活用、ロをモノにしよう 版 0 ク - を語るーーモトローラ「マレー・ゴールドマン」 to レ 《業務用ソフトのベストセラーー夫番頭」 フ 8 づ北糶 0 : 6 ⅱ NI ′ーも、イ 0 00 朝 0 ′ / ( : ド↓こだ ℃囲 0 し " ゖリ心れ 0 PC ー 98 用 ・応募の注意 ◇綴じ込みの葉書に必要事項を記入してお送ケートなどの形で編集にご協力いただくこと りください ( アンケートの回答 , 住所 , 氏名 , があります。ご了承ください。 電話番号 , 希望プレゼント番号を明記してく◇締め切りは 8 月 20 日 ( 必着 ) です。 ださい ) 。 あて先〒 108 ◇記入もれやプレゼント番号が複数記入され東京都港区高輸 2 ー 19 ー 13 NS 高輪ピルソフトバンク株 ている場合 , 綴じ込みの葉書以外でのご応募 は無効とさせていただきます。 「 C マガジン」編集部 ◇プレゼントに当選された方には , 後日アン ⑩実践 C プログラマ養成講座 ①巻頭インタビュー ⑩応用 C 言語 ② Programming on Purpose ⑩ C 言語フォーラム ③提携翻訳 綴じ込み葉書裏面の④ Digest of CL ⑩ワンポイントプログラミング 記事評価アンケート⑤フリーソフトウェア ⑩ C 言語入門講座 には下記の数字こ⑥ BOOK Review ⑩ ANSI C : more 記ください。 ⑩ GNU 奮闘記 ⑦ PragmaC プロジェクト ⑩ RK アルゴリズム ⑧特集 DOS 工クステンダ ⑨アルゴリズムとデータ構造入門⑩ WAI W ネット ⑩ GNU 移植レポート ⑩ CompiIer Makers ロ

9. 月刊 C MAGAZINE 1990年8月号

オ丿ジナル 工クステンタのイ乍成 京都マイクロコンピュータ 玉 1 ご京都マイクロコンピュータに D O S 工ク ーン、の′、理 よ示彡 てもった DOS ユ えるのは必至だろ はじめに 62 CMAGAZINE 19 8 当社としては , DOS 工クステンダの商品 ェクステンダが作られたのて、す。 ンの技術を融合することにより純国産の DOS シリーズて、行ってきた OS のエミュレーショ このときの開発て、蓄積された技術と Turb 。 ます ) 。 る PARTNER Ver. 3.0 に組み込まれてい テクトモードカーネルは , 現在出荷してい したデバッガを開発しました ( 286 / 386 プロ 386 プロテクトモードカーネルとそれを利用 した。そして , PARTNER 開発のため , 286 / デバッガ本体を動作させることを決定しま に対抗するために , プロテクトモード上て、 バッガ (CodeView や Turbo Debugger など ) ( MS ー DOS 用デンヾッガ ) を MS-DOS の競合デ 1988 年の終わり , 当社て、は , PARTNER 開発経緯および開発目的 化に関して次のような目的をもつものにし たいと考えます。 ( 1 ) DOS 工クステンダによる開かれたプロ テクトモードの世界を多くの人たちに体験 してもらうためと DOS 工クステンダが広が ることを願って , アマチュア ( ホビーユース ) など非営利目的て、当社の DOS ェクステンダ 「 EXE286 / 386 」を使用する場合は無償て、配 付します。ただし , 無償版のユーザサポー トは , 基本的に行いません。 質問などは日経 M Ⅸの KMC の会議および 郵便のみに限らさせていただきま . す ( 電話 , FAX などて、の質問にはお答えて、きません ) 。 ②企業などて、営利目的 ( たとえば , 「 EXE286 / 386 」をバインドした商品を作る場 合 , 業務て、使用する場合など ) は有償のサポ 階の開発予定があり今回発表したものはス DOS ェクステンダの開発にあたり現在 3 段 ー開発仕様 当社にご連絡ください ートパッケージを用意します。 この場合は テップ 1 の部分て、す。以後ステップ 2 , 3 と 開発が終了しだい発表していく予定て、す。 ・ステップ 1 「 EXE286 リリース 1 」 MS-C, Turbo C などの既存の処理系を使 った 286 プロテクトモードのプログラムの 開発およびデバッグが可能。 DOS 工クス テンダと簡易デバッガが付属 ・ステップ 2 「 EXE38 6 リリース 1 」 386 用 DOS ェクステンダて、標準的な Phar Lap 互換のソフトウェアが実行可能 ( これ により High C 386 や FM ー Towns のソフト の一部が動作可能となる ) ・ステップ 3 「 EXE386 リリース 2 」 GNU (C コンパイラ , アセンプラ , リンカ など ) を動作させる ( GNU の出力する 386 の オプジェクトをそのまま実行て、きるよう にする ) ステップ 3 以降についてはまったく未定て、 す。しかし , 仮想記憶のサポート , WIN DOWS/386 のように複数の MS ー DOS のアプ リケーションを動作 , MINIX の移植 ,CAD/ CAM , 数値計算などおもしろい世界を広げ られると考えています。

10. 月刊 C MAGAZINE 1990年8月号

が必要てす。 ・バイナリモードのオープン Human68k て、は CR/LF を使用して行末を 表します。 UN Ⅸて、は LF のみて、すから , れを変換する必要があります。通常この作 業は XC のライプラリ関数の中て、行います が , そのためにファイルをオープンするた びにそれがテキストモードて、あるか , バイ ナリモードてあるかを指定しなければなり ません。 fopen( ) や open( ) があれば注意し ますが , それだけては足りません。はじめ からオープンされているファイル , つまり 標準入出力ファイルを使用する場合 , これ らはテキストモードてオープンされていま すから , 必要に応じて setmode( ) します。 また , dup( ) を用いてファイルハンドルを 操作したり , fdopen ( ) を使う場合にも注意 が必要て、す。 XC ては低水準入出力関数と高 水準入出力関数とて、 , それぞれバイナリモ ードのフラグを管理し , これらの間に不整 合があると dup( ) や fdopen( ) に失敗してし まいますにのあたりに対する正しい対策を 得るには , XC に付属のライプラリソースを よく読むことがたいせってす ) 。 特殊ファイナル UNIX の /dev /null は Human68kC は nul に相当しますが , UNIXC は /dev にひとつ しか存在しないのに対して , Human68k て、 は仮想的にすべてのドライプのすべてのデ ィレクトリに存在するのて注意が必要て、す。 モリ , プロセス管理 Human68k と UNIX の間てのメモリ管理 , プロセス管理の違いによる不都合 , XC のメ モリ関係のライプラリの不都合は大体これ くらいてす。 スタック領域 XC のプログラムて使用するスタック領域 はプログラムの起動時に決定され , 一度走 りだしたプログラムはスタックあふれを起 こすとどうしようもありません。プログラ ムの実行時引数て、スタック領域を指定する か , プログラム中 ( main ( ) の中がよいてしょ う ) に , 次のような記述を加えてあらかじめ スタック領域を大きくとっておく必要があ ります。とくに GNU プログラムは a Ⅱ oca ( ) てスタックに大きな構造体を作りがちて、す。 注意してください . xdef STACK SIZE ” ) ; asm( ” asm( ” STACK SIZE equ 131072 ” ) : a 「 gv[ ] の設定 XC ては argv [ 0 ] に実行プログラムのファ イル名が渡されます。これはドライプ名を 含むフルバス名て、渡されるため , argv [ 0 ] の 値によって動作を変えるプログラム ( 初期の e ? grep , gawk など ) の場合には . x 〃を取り 除かないと正しく動作しないことがありま す。また , a 「 gv [ 0 ] に入るファイル名はパス 名の区切りがソ〃てはなく , ヾ \ \ 〃て、あること を忘れてはいけません。 fork( )&exec( ) と spawn( ) UNIX の子プロセス起動は , fo 「 k ( ) または vfork( ) し , 次いて、 exec ( ) するのが一般的て、 す。それに対し Human68k はシングルプロ セスの OS てあり , これらの作業は spawn ( ) て置き換える必要があります。なお , spawn ( ) や exec ( ) の第 1 引数には実行するべきコマ ンドのファイル名を与えますが , ' こだけ はパス名の区切りにソ〃が使えないのて、〃 に直します。 また , Human68k の制限から , コマンド 行が 255 文字を超えると実行てきません。引 数が多いときには中間ファイルを作成する などのくふうが必要てしよう。 popen ( ) や pipe ( ) を使ったプログラムて、 は , 中間ファイルをうまく使って子プロセ スを起動するか , またはこれらに依存した 最新 GNU 移植レポート 最新 G 移植レポート 87 用しています。この文字コードはパス名の コード (Shift-JIS とも呼ばれています ) を使 Human68k ては漢字コードとして MS 漢字 字コード ク収録予定 ) 。参考にしてください。 前て配布しています ( 本誌 9 月号付録ディス が間に合わせて作ったものを h68un ⅸ . a の名 ヘッダファイルがいくつかあります。筆者 UNIX にあり XC にないライプラリ関数や 、、ダファイル フィブラリ関数 , しておきましよう。 が不足したら , 自動的に sb 「 k ( ) するように きます。同時にこのとき malloc( ) てメモリ のて , malloc, 「 e 訓 oc にパッチを当ててお するのは C プログラミングの常套手段てある します。とりあえず ma Ⅱ oc ( 0 ) した後て、「 e 訓 oc り , malloc(O) や realloc(), 0) が NULL を返 XC の malloc( ) や「 ealloc( ) にはノヾグがあ malloc( ) と realloc( ) まうのて、注意が必要てす。 ると , 親プロセスの環境も書き変わってし putenv( ) を使用せずに環境変数を書き変え ビーされます ) 。したがって , 子プロセスて、 変数は親と子て共有されます ( UN Ⅸてはコ Human68k と XC の組み合わせては , 環境 環境変数 必要となります。 LD や S 旧 ALRM はそれぞれなんらかの対策が SIGINT て、代表させてかまいませんが , SIGCH SIGHUP や SIGTERM,SIGKILL て、あれば みとして使用て、きます。ほかの割り込みは Human68k ては唯一 SIGINT だけが割り込 signal の扱い く popen( ) も存在するようて、す。 機能をあきらめる必要があります。 XC て、動