アカウント名:
パスワード:
一番醜いのは自己書き換えの自己書き換えでハーバードアーキテクチャ対応のコードもちろんスーパーバイザーモードかキャッシュ制御関係のサブルーチンがユーザーモードで使えないと実行できない。動作速度はGCC -o3の10倍、アセンブラの3倍、マシン語でのコーディングは8bit時代のタコ部屋を連想させるのであった。今は、Rubyとか使ってゆる~いコーディングを楽しんでます。
えっと、グラフィック画面上のマウスによるリアルタイムな範囲選択という視覚的なサブルーチンで10MHzの68000でまともに動くというのが前提条件かつ68030でも問題なく動作するという仕様だったと思います。
でなるべく高速動作するようにとの注文だったような気がします。10MHzでも20fpsでハイカラーのアニメーションができてましたよ。マウスの選択画面のうちマウスをポーリングして前回のポーリング時と違う部分だけ描画するコードをまず区切りのいい水平ライン分ループ展開したもの(固定コード)を高速に水平ライン分自己展開するコードを垂直ライン分自己展開するソースだったと思いま
これは確かにやった。ちなみにbレジスタとdjnzの方がちょっと高速かつ短くて少し幸せになれた。
VRAMがメモリーにマッピングされてる機種では確かにそのやり方が高速ですね。でも当時のマイコンだとI/O→VDP→VRAMてなってた機種も珍しくなく画面クリアなら垂直帰線期間時に画面描画をOFFにするコマンドを送ってVDPにクリアコマンド投げた方が高速だったり、IN,OUT命令でしかVRAMにアクセスできないなど結構厳しかったような記憶が・・・Z80Aは結構複雑な命令が残ってますね。最近のCISCはZ80ほど複雑な命令が付いてないですね。時代の流れかな・・・
> SP退避 #ちょっと特殊な事してた
ADD HL,SPでもLD (nn),SPでもお好きなほうを
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
昔の自分のコーディング (スコア:0)
一番醜いのは自己書き換えの自己書き換えでハーバードアーキテクチャ対応のコード
もちろんスーパーバイザーモードかキャッシュ制御関係のサブルーチンがユーザーモード
で使えないと実行できない。
動作速度はGCC -o3の10倍、アセンブラの3倍、
マシン語でのコーディングは8bit時代のタコ部屋を連想させるのであった。
今は、Rubyとか使ってゆる~いコーディングを楽しんでます。
Re:昔の自分のコーディング (スコア:1)
8Bit機が全盛だった頃・・
低速機でのゲームプログラミングで、PUSH命令で画面クリアするというテクニックを紹介してる記事あったなあw
Re: (スコア:0)
えっと、グラフィック画面上のマウスによるリアルタイムな範囲選択という
視覚的なサブルーチンで10MHzの68000でまともに動くというのが
前提条件かつ68030でも問題なく動作するという仕様だったと思います。
でなるべく高速動作するようにとの注文だったような気がします。
10MHzでも20fpsでハイカラーのアニメーションができてましたよ。
マウスの選択画面のうちマウスをポーリングして前回のポーリング時と
違う部分だけ描画するコードをまず区切りのいい水平ライン分ループ展開
したもの(固定コード)を高速に水平ライン分自己展開するコードを垂直ライン分
自己展開するソースだったと思いま
Re:昔の自分のコーディング (スコア:1)
おまけに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戻す
割り込み再開
こんな感じだったかな・・
Re: (スコア:0)
これは確かにやった。ちなみにbレジスタとdjnzの方がちょっと高速かつ短くて少し幸せになれた。
Re: (スコア:0)
VRAMがメモリーにマッピングされてる機種では確かにそのやり方が高速ですね。
でも当時のマイコンだとI/O→VDP→VRAMてなってた機種も珍しくなく画面クリアなら
垂直帰線期間時に画面描画をOFFにするコマンドを送ってVDPにクリアコマンド投げた
方が高速だったり、IN,OUT命令でしかVRAMにアクセスできないなど結構厳しかった
ような記憶が・・・
Z80Aは結構複雑な命令が残ってますね。
最近のCISCはZ80ほど複雑な命令が付いてないですね。時代の流れかな・・・
Re: (スコア:0)
> SP退避 #ちょっと特殊な事してた
ADD HL,SPでもLD (nn),SPでもお好きなほうを