試行錯誤
前のつづき。
いよいよ単精度実数、倍精度実数の処理にかかり、テストさせていて別の問題に気づく。
「REM」の問題。「'」となっていても「:REM♢」とか変換される。最後の「♢」についてはなかに「?」らしきもあるので不明なものとして処理されているのかもしれない。
ということでそれらをあらためて調べると、どうやら、「'」で示された REM は、中間コードでは「3A8FE9」となっている。3A が : 、8F は REM を表す中間コード、E9 は ' を表す中間コード。ということでこれらをセットで処理できるように修正してひとまずはよくなったものの、はたして単一の「'」であったりとか、純粋に「REM」と使われているときとかは、まだわからない。
実数の扱いも方法がようやくわかったので実装してみたものの、読み取った 16 進数を .to_s(2) で二進数に変換すると、行頭が 0 の場合カットされてしまうために桁不足が発生していたと判明。
これで、だいたいにはなったものの、まだ有効桁の処理が残っている。
やはり、もともとのプラットフォームで作成するほうが、内部ルーチンとか使って楽ができるのではないかと思い始めたところ。まあ、練習なので、やれるところまでは。
| 固定リンク
コメント