「アキュムレータ (コンピュータ)」の版間の差分

編集の要約なし
* メモリ位置 x にある数をアキュムレータの内容から減算する。
* アキュムレータをクリアし、別のレジスタの内容をアキュムレータにシフトさせる。
さらに[[EDSAC]]の場合、乗算用レジスタと、あるメモリの内容の積を、アキュムレータ(Aレジスタ)に足し込む、という[[積和演算]]として乗算機能が実装されており、ベクトルの内積などの計算に便利なよう設計されていた(なお、EDSACは「アキュムレータをクリアし、……。」というような命令を持たない、という、現代の機械語プログラマから見ると変な制限がある。足すか引くことはできるが、「アキュムレータに転送する」に相当する操作は1命令ではできない。アキュムレータをゼロクリアするには「アキュムレータからメモリ位置 x に転送し、アキュムレータをクリアする。」という命令を使わなければならない。しかる後にアキュムレータに足すことで、アキュムレータに転送する、に相当する操作となる。「後払い方式」(「払う」は、payの意味ではなくクリアするという意味)などとも呼ばれた)
 
複数のレジスタも持っているが、アキュムレータとして特別扱いされるレジスタも持っている場合、ニーモニックにアキュムレータの存在があらわれるものもある。たとえば、[[ドナルド・クヌース]]の[[MIX (プログラミング)|MIX]] では、アキュムレータへのロードを行う命令(LDA)やアキュムレータから他へのストアを行う命令(STA)がある。
 
アキュムレータのような役割のレジスタがないと、演算(加算、乗算、シフトなど)の結果を一々[[主記憶装置]]に書き込む必要があり、おそらく次の命令で即座にそれを読み出す必要が生じる。初期にはレジスタに使うトランジスタ(ないし真空管)を節約するため等の理由でそういった設計のコンピュータもあって、たとえば[[FUJIC]]はそのような設計で3オペランド型の命令だった(その場合、性能上のペナルティを軽減するため、RISCの設計で言うバイパスに似た効率化を図った例もある)
 
== 脚注 ==