3オペランド命令
読み:スリーオペランドめいれい
外語:3 operands instructions
オペランドが3個ある命令のこと。
概要
RISCプロセッサーなどに見られるが、現在ではx86などCISCでも3オペランド命令は存在する。
例えばC←A+Bは、A←A+Bと比べ、コンパイラーに通したときにスタックの移し変えが不要となり高速化に寄与したので、RISCではよく採用された。
RISCは一般にレジスターの数が多いため、CISCと違ってレジスターを贅沢に使えたことも、背景にあったものと思われる。
特徴
使用例
「a=b+c」を3オペランド命令で実行しようとした場合、次のようになるだろう。
ADD a, b, c ; a←b+c
一つの命令でこれが実現できることが分かる。
但し、その全てまたは殆どがレジスターでなければならない、など、何らかの制限がかけられていることが多い。
ゼロレジスター
2オペランド命令を廃し、3オペランド命令だけとする案や実装もある。
例えば、A←Bという命令をA←B+0と書くことで、命令の直交性や命令セットのシンプルさに寄与し、さらにコンパイラーの処理が軽くできると考えられた。
しかし0をイミディエイト(即値)とするのは効率が良くないので、こういったプロセッサーでは常に0が読み出されるゼロレジスターと呼ばれるものが用意されている。
ADD a, b, zr ; a←b+zr
MOV a, b ; ADD a, b, zrのエイリアス
この場合、アセンブラーの機能として、MOV命令などがエイリアスとして用意されることが多い。
再検索