アダルト・ヴァイオリン May the force be with you..

2005年9月2日

VIA K8M800のオンボードビデオ

Filed under: Linux — @ 9:59 PM

職場のマシンでX11がどうにも動かないというので、色々調べてみたが、
どうやら簡単には動きそうもない。

VIAのホームページからフレームバッファドライバを入手して
試してみたが、これも画面が乱れて使い物にならない。

AGPのビデオを外付けしたほうが快適に使えそうな感じである。

DELLの64ビットマシン500台限定で割引になっている。
う~ん、どうしたものやら・・

昨日の打ち合わせでMac使いのO氏にガレージバンドはいいですよ~
なんて、焚きつけられたから、Macも欲しいし、そんなに場所も
時間も(ついでにお金も)余っているわけではないしなぁ

セグメント保護例外

Filed under: 組込みシステム — @ 10:08 AM

自分のソフトに喰わせる、ある記述で、SEGVというエラーメッセージが出るという話。
原因は文法ファイルでは記述しにくいシンタックスエラーなので、
コードジェネレーション時に検出するべきところ、検出ルーチンが
入ってなく、NULLポインターを参照しようとしたのである。

ランタイムにOSがSEGVを検出するのであるが、SEGVというのは何とも
ピントはずれなメッセージであるといつも思う。
NULLポインター参照とかいうメッセージにしてくれればいいのであるが・・

とまぁ、OSのメッセージに文句を言っても仕方がないのである。

文法ファイルでエラーを検出できるとずいぶん楽になり、
特にエラー箇所のテキストまで特定できるのであるが、
コードジェネレーションで検出すると、自前で全部やらなくては
いけない上に、エラーテキストがモジュールの最後の(})となって
情報量がなくなってしまう。

このあたりを何とかしようとしたら、やはりケースを細かく分類して
文法ファイルで全て書き下すしかないのだろう。
言語仕様がブロック構造の最下位の動作のいくつかが上位構造によって
選択的に実行できるような構造になっているため、ブロック構造の
記述という、最下位動作以外に何も違わない似て非なる文法記述を
たくさん書かなくてはいけないのは、どうも気持ちが悪い。
他の手段としては、レキシカルアナライザのトークン切り出しと
シンタックス処理系を連携し、再帰下降だけに任せず自前の処理で
判定するというもの。
これはうまく行きそうだけれど、二つの系の間の独立性を弱めるので
ソフトウェア設計的にはきれいではない。

とりあえず、全体の再構成は少し時間をかけて検討しよう。

Powered by WordPress