ゼロレジスター
読み:ゼロレジスター
内容が常に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である。
再検索