ゼロレジスター
読み:ゼロレジスター

 内容が常に0であるレジスターのこと。
目次

概要
 ソースとして使用した場合は常に0が読み出される。デスティネーションとして使用した場合は、その結果が破棄される。
 RISCなど、特に3オペランド命令に対応するマイクロプロセッサーで用意されることの多いレジスターで、一般には汎用レジスターの一つをゼロレジスターとする。
 例えば、R0〜R31まで32個用意される汎用レジスターのうち、R0をゼロレジスターとするような製品がある。
 こうして、3オペランド命令しかない中でも、オペランドが二つで充分な演算をする際にゼロレジスターを用いることで演算を行なうことができる。

特徴

使用例
 ゼロレジスターを0とすると、例えば、A←Bという代入命令は、A←B+0という加算命令や、A←B Or 0という論理演算で書くことができる。
 ビットテスト命令も、0←A And Bという論理演算で書くことができ、結果は従来通りフラグレジスターに得られる。
 ゼロレジスターを持たない設計のプロセッサーと比較して、必要となる基本の命令セマンティクスは維持しながら、実際の実装上の命令数を削減することが可能で、もって回路がコンパクトになるため、RISCでよく採用されている。

ハードウェア
 ゼロレジスターは本来記憶素子があるべきところに0レベルへの配線が付けられているだけで、回路上特別扱いはされていないのが普通である。
 読み出せば常に0になり、書き込んでも何も起こらない(記憶素子が無い以上、それは無視される)。
 日立(後のルネサス)のSuperHでも、当初はなかったが、SH-5からゼロレジスターが新設された。
 ARMでも当初はなかったが、64ビットのAArch64ステートで採用された新命令セット「A64」からゼロレジスターが新設された。

ソフトウェア
 書き込んでも何も起こらないため、ここへの書き込み命令をNOPとするプロセッサーもある。
 例えばMIPSでは、左論理シフト(SLL)命令の一つ「sll r0, r0, r0」をNOP命令としている。機械語は0x00000000である。

再検索