1行掲示板です。情報提供などありましたらよろしくお願いします。
特に、記事の誤り訂正などは「ほかの方も読める記録が残る」ので、掲示板を推奨します。
長い内容など、メールで連絡を取りたい方は以下のアドレスへ。

各ページの下にも1行掲示板がついていますが、このページではそれら全てを集めて表示しています。
特定ページへの内容への意見は、そちらのページで書いていただけるとありがたいです。
また、日付にリンクがある場合は、そのリンクを辿ることで元ページを見ることが出来ます。
(日付にリンクがないものは、このページで書き込まれた意見です)
作者が怠惰なので、反応は遅いかもしれません。
申し訳ありませんが、現在意見投稿をできない状態にしています。
【あきよし】 ありがとうございます。改良プログラムを追記しました。 (2014-08-04 16:20:52)
【名無し】 Z80 条件省略に倣ったところ、LDY #100 ; 2;TYA ; 2;ROR A ; 2;LDA #0 ; 2;TAX ; 2;BCC LOOP ; 3/2;CLC ; 2;BCC MOD1 ; 3/2;INCH:;INX ; 2;DEY ; 2;BEQ EXIT ; 3/2;CLC ; 2;LOOP:;ADC TABLE,Y ; 4;BCC SKIP ; 3/2;INX ; 2;CLC ; 2;SKIP:;DEY ; 2;MOD1:;ADC TABLE,Y ; 4;BCS INCH ; 3/2;DEY ; 2;BNE LOOP ; 3/2;EXIT:;STA >0 ; 3;STX >1 ; 3 で1087クロックになるようです。 (2014-08-04 15:46:29)
【m.ukai】 Z80のほう、初期値状態でC flag クリアする&BCレジスタのオーバーフローしないという前提を置くと、SRL A を RRA (4+1 clk) に置き換えられます (2014-08-04 13:03:42)
【m.ukai】 Z80のほう、SKIPラベル一は1命令後ろにできます(初期値が0でなければ)。あと、ループの形をかえることで、(前半省略) jp loop0; loop: sla c; rl b; loop0: srl a; jr nc,loop; add hl,bc; jp nz,loop; end: srl h; rr l; はやくなります (2014-08-04 12:53:39)
【あきよし】 情報ありがとうございます。ファミコンで実際使われていた、という証言は重いです。この方法をありにして、別ページの方を書き変えました。ただ、ループ展開は制限させてもらっています(展開競争は虚しいので)。 (2014-08-04 10:16:58)
【あきよし】 指摘ありがとうございます。反映しました。BIT は 8(10)なので、3クロック短縮ですね。(オペコードが2バイトある命令は、2wait入ります) (2014-08-04 05:53:59)
【名無し】 LD A,C ; 4 (5) AND #1 ; 7 (8) は BIT 0,C ; 8(9) にした方が4クロックと1バイトお得ですね。 (2014-08-03 22:11:35)
【名無し】 巨大テーブルはレジスタ間演算を高速にやりたい他のルーチンからも共用できるので、ある程度以上の大きさのプログラムでは非現実的なものではない筈です。ファミコンのプログラムで見掛けたこともありますし、http://wiki.nesdev.com/w/index.php/6502_assembly_optimisations なんかでもテクニックのひとつとして紹介されてますね。 (2014-08-03 17:01:28)
【あきよし】 巨大テーブル化。速度は速いですが、コスト・効率比が悪すぎて現実的に使われることは無いテクニックだと思います。そのため、比較としては NG。ただ、この発想は僕はすごく好きです。 (2014-08-03 16:45:27)
【あきよし】 みなさん、改良案ありがとうございます。別記事を書きましたので、今後はそちらに投稿していただけるとありがたいです。 (2014-08-03 16:42:43)←最近 31 32 33 34 35 36 37 38 39 40 41 過去→