パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

#俺が見たクソコード選手権、Twitterで盛り上がる」記事へのコメント

  • 一番醜いのは自己書き換えの自己書き換えでハーバードアーキテクチャ対応のコード
    もちろんスーパーバイザーモードかキャッシュ制御関係のサブルーチンがユーザーモード
    で使えないと実行できない。
    動作速度はGCC -o3の10倍、アセンブラの3倍、
    マシン語でのコーディングは8bit時代のタコ部屋を連想させるのであった。
    今は、Rubyとか使ってゆる~いコーディングを楽しんでます。

    • どういう状況でそのような処理速度を要求されたのでしょうw

      8Bit機が全盛だった頃・・
      低速機でのゲームプログラミングで、PUSH命令で画面クリアするというテクニックを紹介してる記事あったなあw
      • by Anonymous Coward

        えっと、グラフィック画面上のマウスによるリアルタイムな範囲選択という
        視覚的なサブルーチンで10MHzの68000でまともに動くというのが
        前提条件かつ68030でも問題なく動作するという仕様だったと思います。

        でなるべく高速動作するようにとの注文だったような気がします。
        10MHzでも20fpsでハイカラーのアニメーションができてましたよ。
        マウスの選択画面のうちマウスをポーリングして前回のポーリング時と
        違う部分だけ描画するコードをまず区切りのいい水平ライン分ループ展開
        したもの(固定コード)を高速に水平ライン分自己展開するコードを垂直ライン分
        自己展開するソースだったと思いま

        • Z80A(4MHz)だったので非力で非力で、BGMを鳴らし続けてるゲームソフトが驚かれてた時代でしたからねぇ・・
          おまけにM1サイクルに1ウェイト必要な機種だったので、実質6502系の1MHz以下の速度しかでないというw

          こんなスペックで8KBのVRAMを瞬時にクリアしようというお題でした。

          割り込み停止
          SP退避 #ちょっと特殊な事してた
          LD A,128 #ループ回数カウンタ 8bitレジスタの方が減算が速い&ループ終了判定の回数も減らしたい
          LD HL,VRAM末端アドレス + 2
          LD SP,HL
          LD DE,クリア用定数
          :ラベル
          PUSH DE を32個
          DEC A
          JR NZ,:ラベル
          SP戻す
          割り込み再開

          こんな感じだったかな・・
          • by Anonymous Coward

            これは確かにやった。ちなみにbレジスタとdjnzの方がちょっと高速かつ短くて少し幸せになれた。

            • by Anonymous Coward on 2012年04月05日 21時56分 (#2130375)

              VRAMがメモリーにマッピングされてる機種では確かにそのやり方が高速ですね。
              でも当時のマイコンだとI/O→VDP→VRAMてなってた機種も珍しくなく画面クリアなら
              垂直帰線期間時に画面描画をOFFにするコマンドを送ってVDPにクリアコマンド投げた
              方が高速だったり、IN,OUT命令でしかVRAMにアクセスできないなど結構厳しかった
              ような記憶が・・・
              Z80Aは結構複雑な命令が残ってますね。
              最近のCISCはZ80ほど複雑な命令が付いてないですね。時代の流れかな・・・

              親コメント

192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり

処理中...