修理屋稼業! 先月のPSOはどうって事なかったろ? 道場主 2009/08/01 01:25:43
修理屋稼業! 先月のPSOはどうって事なかったろ? [返事を書く] | ||
既にご存知の通り、バージョンアップのため、 かなり以前からDCPSOのディスアセンブルなぞをしてるわけです。 が、プログラマが馬鹿なのか、コンパイラ(リンカ)の最適化がでたらめなのか、 プログラムの内容はというと、とてもお粗末なコードが山盛りなワケです。 んで、折角なので、その一部というか、 頭を傾げざるを得ないようなサブルーチン等を紹介していこうかと思ったワケで。 一応、連載になるかもしれないし(笑)。 で、今回のサブルーチンはH'8c01354e。 ニモニックは以下の通り。 H'8c01354e: mov.l @(H'8c013590), R3 H'8c013550: mov.l @(H'8c013598), R2 H'8c013552: mov.l R4, @R3 H'8c013554: rts H'8c013556: mov.l R5, @R2 H'8c013590: H'fff0 H'8c013592: H'8c00 H'8c013598: H'fff4 H'8c01359a: H'8c00 BASICで表記すると、 LET R3 = &H8c00fff0 LET R2 = &H8c00fff4 LET (R3) = R4 LET (R2) = R5 RETURN つまり、実際には、 LET (&H8c00fff0) = R4 LET (&H8c00fff4) = R5 RETURN という事をしてるだけ。 ペアレントルーチンに組み込むより、2サイクル遅くなっている。 度々使うルーチンで、メモリ節約のためにサブルーチンにしてある ……というなら有り得るのだけど、 実はこのサブルーチンをコールしているのは1箇所しか無い。 そのため、2ロングワードもメモリを余計に消費している。 ……まぁ、このルーチンに限らず、このプログラム、 1箇所からしかコールしてないサブルーチンがやたらと多いんだけどね。 なかなかに謎なルーチンだ。 | ||
|
├続き(その1)。 道場主 2009/08/01 01:26:00 │└続き(その2)。 道場主 2009/08/01 01:26:18 ├息抜き仕事の方が捗る?先月のPSOはどうって... 道場主 2009/09/01 07:40:19 │└続き。 道場主 2009/09/01 07:40:55 ├あなたは今までに何人の仲間を救ったか?先月... 道場主 2009/10/01 02:56:34 ├宇宙の孤児!先月のPSOはどうって事なかった... 道場主 2009/11/02 14:48:19 ├宇宙の戦士!先月のPSOはどうって事なかった... 道場主 2009/12/01 00:48:46 (修正2回) └ラストサバイバー!今年のPSOはどうって事な... 道場主 2009/12/31 19:04:18
[『ファンタシースターオンライン』 裏シークレットBBS]
[HPへ戻る]
新規発言を反映させるにはブラウザの更新ボタンを押してください。