#99 Article 313 Posted at 1992/06/20 20:30:10 by まる (MAP2055) [A.C]

Subject: Re: Re: ぺけ6でやるC言語 /312 /311

XBASICtoCについて適当に(笑)答えさせて頂きます。間違
っていても責任もてませんのでそのつもりで(何も見ずにこの文を書
いているので)。

その1。

 BAStoCでは、BASIC命令とほぼ同等の関数群を使用した
ソースを作成します。そのため、専用のライブラリを使用する(リン
ケージする)のですが、そのためのリンケージオプションがあります。
/Wです(必ず大文字)。

 >cc foo.c /W

としてみて下さい。
 ちなみにこういったことは当然ながらマニュアルに記載してあります。
よく読んでみましょう(まさかマニュアルないなんてことないでしょう
ね。天下無敵のマニュアルプロテクトだし)。

 ちなみに、

 >cc foo.bas

とすれば、勝手に/Wオプションが付いたことになると思いましたが?

その2。

 GCCですが。使用している、「XC」のバージョンはいくつでしょ
うか。GCCそのもののバージョンはいくつでしょうか(X68ローカ
ルのバージョン(X6_30とか)も)。
 使っているX68の実装メモリは何MBでしょうか?フリーエリアは
何MBでしょうか?G-VRAMをラムディスクにしてはいないでしょ
うか?

知っての通り、GCCは湯水のごとくメモリを使います。失礼かも知れ
ませんが、「メインメモリ2MB」では、まともな大きさのプログラム
はコンパイルできません。フリーエリアが最低でも2MBくらいは欲し
くなります。メモリが足らなくなると、ワークとしてG-VRAMを使
用します。このとき、もしもテンポラリディスクがG-VRAMディス
クならばイッてしまうでしょう(そうでなくてもGVRAMは死にます)。
ま、この辺(VRAM使用)はオプションで選べたような気もしますが。

 また、BAStoCで作られたソースは昔のGCCでは一部コンパイ
ルできないものが存在します(例えば、2進数表現など)。最近のバー
ジョンでは大丈夫なようですが。

 バスエラーということなので、恐らくメモリ不足かなんかだと思いま
すが(XCのMAKEを使っているとスタックオーバーフローでバスエ
ラーが発生することもあるけど)、バージョンによっては、初期メモリ
の取得に失敗するものがあったように記憶しています。
(memfreeコマンドで最大使用可能メモリと全体使用可能メモリの大き
さが違うときに起こったような気がする)

なお、GCCのオプションはXCとは全く違うので、それなりの文献を
見るように。


あと、老婆心から、一言。
BASICで作ったプログラム、Cにコンバートできたからといって、
素直に動くかはわかりません。バスエラーなどが発生することも多くあ
ります。おためし程度に作るのでしたら別ですが、最初からCで組んだ
方があとあと楽になるとは思いますが。


「GCCを使いたいから使っているんじゃない。他にまともに使える
 言語がないだけ。どうしてDOSのCは素直なCのソースがコンパ
 イルできんのだろう?あ~あ、UNIXのCはよかったなぁ。」

   MS-Cでレイトレのソースがコンパイルできなくて泣いている、
                    MAP2055 まる
      (スタックオーバーフロー(64k)なんて、大っ嫌いだぁ!)

p.s. もうMick'nさんが答えてましたね(^^;)