トップ «前の日記(2004年03月23日 (火)) 最新 次の日記(2004年03月25日 (木))» 編集

*Messages*

Search

書いてる人: しまだみつのぶ (aka. simm, saica)

最新情報URL: https://gouketsu.net/simm/d/

"8024402C"でたどり着かれた方はこちら: 「壁の内側からWindowsUpdateに失敗する


2004年03月24日 (水) [長年日記]

1 [comp] Z80

なぜか仕事でZ80のアセンブラをレビューすることになったので、やってみた。

ステート数を見ながらチューニングできそうなところを探すというのが目的だったのだが、

  • 裏レジスタ使えねー
  • EX DE,HL は結構使える

というのを実感。Z80バイナリで遊んでた中学の頃はそれほど気にならなかったのだが、 こういうことは、目的がはっきりしていると見えてくるものだ。

  • SPの値を他のレジスタに代入する手段
  • 各レジスタ個別に裏レジスタと交換する手段

があれば、いろいろチューニングのネタもありそうなのだが…

2 [rail] 乗車車両 (3/24)

出勤

L84(8584) → VE46+X71(8121)

帰宅: 国道櫟本よりバスにて天理駅まで

X52(8152) → DH01(5301)

本日のツッコミ(全3件) [ツッコミを入れる]
1 X (2004年03月24日 (水) 21:59)

SPの値を他のレジスタに代入する手段 <br> LD HL, 0000 : 21 00 00<br> ADD HL,SP : 39<br><br>各レジスタ個別に裏レジスタと交換する手段 <br> PUSH HL : E5<br> EXX : D9<br> PUSH HL : E5<br> EXX : D9<br> POP HL : E1<br> EXX : D9<br> POP HL : E1<br><br>これぢゃだめ?(コード効率悪すぎるか・・・)

2 simm (2004年03月25日 (木) 00:04)

ちと言葉足らずでしたね。「…があれば」の部分、もちろん、少ないステート数でできる、というのが条件です。<br>X案、まさに「コード効率悪すぎ」ですわ。<br><br>まずSPのほう。まず最初にそれ考えました。2ステップで少なく見えるけど、21ステートかかるので、チューニング(高速化)には使えません。<br>レジスタ交換のほうは、メモリアクセス(PUSH/POP)がはいる時点でNG。PUSHx2+POPx2+EXx3で54ステートかかります。

3 X (2004年03月25日 (木) 14:28)

1) SPを操作する命令はろくなのがないんで多分これ以上短くなりまへん<br> だいいちロード命令だけで10ステートかかりまんがな<br><br> ということで、念力で LD HL,SPという命令を作り出してください(謎)<br><br>※ゲームボーイでつこてるZ80カスタムCPUには12ステートで LDHL SP,e とかいう使える命令があるけどねぇ。<br><br>2)EXXと無関係なレジスタってSPのほかにはインデックスレジスタ2本だけやし、PUSH/POP含めてメモリアクセスせんと無理ですがな・・・もちっと効率のよい方法はあるかもしれんが<br><br>つーことでおいらにはもうお手上げです


Information

更新情報取得方法

*Messages* の更新情報取得には、antenna.lirs もしくは index.rdfをご利用ください。 豪傑アンテナLIRSからも取得可能です。