OSECPUと第三世代OSASKの差異のメモ

  • (by K, 2013.04.10)
    • (osask.netに書こうと思ったんだけどパスワードを忘れて新規ページが作れない。メモを見つけるまでこっちに書いておく)

メモ

  • gg02でも簡易レジスタsave・restoreはある。そしてこの命令にも精度指定がある。したがって、上位のビットは復元されないことになる。
    • そしてその精度は、その関数の復元精度ということになり、それ以上のビット幅で使っているレジスタについては、呼び出し側で保存、復元する必要がある。これを支援するためにuse(Rxx, 128); みたいな疑似命令を用意してもいいかもしれない。
    • でもちょっと待て。そもそも上位のビットを破壊しないのであれば、復元しなくてもいいのではないか?・・・その通りだ。
    • しかし上位ビットを破壊しないという保証が難しい。16bitアーキテクチャで実行して、タスクセーブして64bit環境で復元した場合、上位を壊さないような命令で実行するのか?・・・それは違うだろう。
    • これはビット数に依存しないでそこそこの性能を出すという目的のための代償だと思って割り切るべきだ。
  • gg02では、バックエンドもhh4にする。そうすればtinyモードとか、レギュラーモードとか、そういうことに頭を悩ませなくても済む。hh4でも固定長はできる。
  • 色数指定で15bitカラーをやりたい。これは0x7fffまでしか使わないので、符号付きの16bit環境と相性がいい。
  • Pxxを指定するときはtypよりも前にする。OSECPUではtypを先行させて失敗だったと思う。
  • enter/leave命令のフロントエンドコードは再考の余地がある。
    • しかし関数展開を考えるとこれはこれでよかったのかもしれない。
  • オペコードの直後は精度フィールド。余計なことで悩まないためにも、単純な数字を入れる(符号なし整数)。
  • src,destの順序のほうがいいかもしれない。検討する価値はある。
  • -16からがレジスタでいいのかどうかは検証の余地がある。まあでもR0Fまで入ればいいのだから、やっぱりこれでいいのかな?
  • グラフィックス系のAPIでmode=4で3bitカラーは失敗だった。頻度を考えればこれはmode=1でいいはず。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-08-01 (木) 17:52:18 (3923d)