石垣です。
最近セキュリティ関係が忙しくてフォローできてませんが……。
Tachibanamasashi <moomin@happymusic.com> さんが 2001/03/01 08:32:35 に
【[analog-jp:00442] Re: Analog日本語化その後】で書かれた
>そうですね。
>昨日は素直に納得してしまったのですが、自己書き換え型のプログラ
>ミングは、
>
>・(OSなど)環境によってはメモリ保護エラーが出るかも知れない.
>・それを回避するために、頭のいいコンパイラでは、逆に速度が遅く
> なるようなバイナリコードを出力するかも知れない.
>・ROM化できない.・・というのは今回は無視していいかな.
>
>といった弊害も考えられますね。
えっと、勘違いでなければ、元の話は自己書き換えの話では無かったような。
単に、ある変数に関数へのポインタを格納してという話でしたよね。
自己書き換えはコード領域への書き込みですから、普通フォルトを発生しますよ
ね。今回の場合は、データ領域への書き込みですのでフォルトは発生しません。
ただ、その領域に書かれている内容が正しいアドレスである事を保証する事は難
しいので二次的な問題は発生するかもしれませんが。
という事で、ROM化も可能ですし、速度低下という事も無いでしょう。
更に、必要なら、
dos_to_unix()
{
switch(hoge) {
case hoge: sjis_to_euc();
case hoge: sjis_to_hex();
case hoge: sjis_to_cap();
}
}
ってやるだけでもコーディングはすっきりしますが。
>>> ところで、バイナリのサイズを小さくする目的なら、内部で簡単な
>>> 圧縮をかけておけばいい、とかいうのではダメでしょうか。
>>> <あ。実行時のメモリ消費量が上がってしまうんだ(自己解決)。
>>
>>いや、実行時のCPU使用量が増えるような。
>
>や。起動時に 1度だけ展開する方法だと、速度低下は無視できる範囲じゃ
>ないかと思います(逆に、ディスクから読む量が減ることによって速く
>なるかも)。
でも、その程度の圧縮や、時間短縮は現代には無意味かと思います。それよりは
メンテナンスの容易さなどを考える時代かと。
個人的には、analogのログ処理速度向上を重視したいです。かなり時間がかかる
様になってきましたので。
--------------------------------------------------
石垣和人 (Kaz) K-factory director
Kazuhito Ishigaki mailto:ishigaki@factory.gr.jp
^o^; http://www.factory.gr.jp
--------------------------------------------------