低レベルなヒトの覚え書き

●LSI C-86のエラー

1. 「out of memory」


[個人的な体験談]

このエラーに遭遇したのは、自前のプログラムを改造しているときのことでした。
最初は、例によって、診断メッセージに記された行番号のあたりを点検してみましたが、どう考えても文法的におかしなところは発見できず。 念のため、メッセージを日本語で表示させようとしても(lcc.exeの「-j」オプション)、どういうわけか、このエラーには通用しませんでした。
付属のマニュアル(LSIC86.MAN)を調べてみると、lld.exeとprof.exeのところに「Out of memory」というエラーの説明がありました。 2つのコマンドのうち、前者のほうは、lccの一部みたいなものなので、とりあえず、問題のエラーはlldのエラーだと仮定することにしました(実際には間違い)。
マニュアルによると、lldの「Out of memory」は、「シンボルテーブルがあふれました」という意味だそうです。 シンボルテーブルとは何なのか、ネットで調べてみたものの、変数や予約語の名前に関係があるという程度のことしかわかりませんでした。
とりあえず、何かが過剰なのは確かなので、変数を減らしてみたり、printfで出力するテキストを減らしてみたりと、思いつくまま試してみました。
そうこうするうち、ファイルサイズを減らせばエラーにならないことがわかってきたのですが、だからといってプログラムの機能を削るわけにもいきませんし、もともとが10KB程度しかない小さなプログラムだったので、ファイルサイズが本当の原因でないことも明らかでした。
で、完全に行き詰まった挙げ句、試しに「out of memory」というメッセージそのものをネットで検索してみたら、どこぞのBBSにて同様のトラブルに関する相談が行なわれていたのを発見。 そのおかげで何とか問題を解決することができました。

→トップ , →ひとつ上(lsic1)


R.2: 2006/08/01
Copyright (C) 2005,2006 A.Satoshi