Home > スポンサー広告 > TempAR 0xC2 レジスタ退避?3

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント: -

Home > スポンサー広告 > TempAR 0xC2 レジスタ退避?3

Home > ゲームその他 > TempAR 0xC2 レジスタ退避?3

TempAR 0xC2 レジスタ退避?3


TempAR作者さんから0xC2使用時のレジスタについて回答を頂きました。

In the actual source code there is nothing specific 
to handle the backup/restore of register
before and after calling the subroutine.
■正確にいうと、サブルーチンを呼ぶ前後でレジスタの値のバックアップや
リストアなどの動作を特にするようにソースを作ってない。

The only registers which should be 100% safe to manipulate are:
a0 - a3: TempAR passes 0x00000000 to each of these registers
as arguments when calling the function.
v0 - v1: These would be the return values of the function
and aren't used by TempAR in any way.
■次に挙げるレジスタは扱っても100%安全である。
a0-a3(関数の引数として使われる)v0-v1(戻り値や式の評価に使われる)

Registers which I haven't experiences any direct crashes with:t0 - t9
■t0-t9(テンポラリとして使われる)に関しては私は今までクラッシュを体験したことが無い。


MIPSアーキテクチャ - レジスタ使用規則/wikipedia
の通り、s0-s7はサブルーチンを抜ける際にきちんと値をリストアしないといけないようですね。

0xC2コードは255byte制限があり、s0-s7を使うとリストアに容量を食われるので
0xC2コードではa0-a3 v0-v1 t0-t9を使うのが無難ですね。

TH2DTの個人強化コードの場合、at(戻り値用) a0-a2(アドレスと戻り値用) v0(式評価用)
t0(ループカウンタ用)t1-t3(ストアする値用)を使用しているのでクラッシュしないはずです。


関連記事
スポンサーサイト

コメント: -

Home > ゲームその他 > TempAR 0xC2 レジスタ退避?3

Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。