コンパイラによるレジスタ使用法とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > コンパイラによるレジスタ使用法の意味・解説 

コンパイラによるレジスタ使用法

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/05 10:21 UTC 版)

R3000」の記事における「コンパイラによるレジスタ使用法」の解説

ハードウェアアーキテクチャ上、汎用レジスタ使用次のような制約がある。 汎用レジスタ $0 は常に内容が 0 であり、何を書き込んでも 0 のままである汎用レジスタ $31 はサブルーチンコール時の jump and link 命令リンクレジスタ戻りアドレス格納するレジスタ)として使われるHI レジスタLO レジスタ整数乗除算の結果格納する。 これら以外に制約はない。 MIPS用意したコンパイラなどのツール群呼出規約一環としてレジスタ使用法規定している。これらの規定ハードウェア制約ではないが、ツール群がこれに従っている関係で、MIPSアーキテクチャ採用したシステムではほぼ間違いなくこの規定に従ってレジスタ使用している。 レジスタ名称番号用途Callee must preserve?$zero$0 常に 0 N/A $at$1 アセンブラ一時的に使用 no $v0–$v1$2–$3 関数リターン値または式評価結果格納 no $a0–$a3$4–$7 関数の引数 no $t0–$t7$8–$15 一時変数用 no $s0–$s7$16–$23 セーブされる一時変数用 yes $t8–$t9$24–$25 一時変数用 no $k0–$k1$26–$27 OSカーネル専用 no $gp$28 グローバルポインタ(広域変数領域ベース) yes $sp$29 スタックポインタ yes $fp$30 フレームポインタ yes $ra$31 リターンアドレス N/A なお、"Callee must preserve?" とは、あるルーチンの中でそのルーチン入ってきたときの値を保持した状態で呼び出した側に戻る必要があることを意味する例えば、$s-レジスタルーチン内で使うときは、その内容スタック一時的に退避させなければならない。$sp と $fpルーチン入ってきたときにセーブされ、それぞれルーチン固有の固定値インクリメントされる。そして、そのルーチンから戻るときに元の値に戻す。一方 $rajal 命令ルーチン飛び込むときに自動的に変更される。$t-レジスタサブルーチン呼び出すと内容破壊されるので、必要なら呼び出す側がセーブしておかなければならない。$at はアセンブラ仮想命令マクロ命令)で一時変数として使われる。$t-レジスタだけを使ってサブルーチン呼び出すことがないルーチンは、スタックレジスタセーブする必要がないため、$sp や $fpセーブする必要がない

※この「コンパイラによるレジスタ使用法」の解説は、「R3000」の解説の一部です。
「コンパイラによるレジスタ使用法」を含む「R3000」の記事については、「R3000」の概要を参照ください。

ウィキペディア小見出し辞書の「コンパイラによるレジスタ使用法」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「コンパイラによるレジスタ使用法」の関連用語

1
8% |||||

コンパイラによるレジスタ使用法のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



コンパイラによるレジスタ使用法のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのR3000 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS