16ビット乗算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/21 02:01 UTC 版)
「データゼネラルNova」の記事における「16ビット乗算」の解説
Novaの基本モデルには、価格競争力を維持するためにハードウェアの乗算/除算機能が内蔵されていなかった。 次のルーチンは、2つの16ビット語を乗算して 16ビット語の結果を生成する(オーバーフローは無視される)。 これは、ALU 命令の shift および test(スキップ)を組み合わせて使用していることを示している。 このルーチンが jsr によって呼び出された場合、AC3はリターン・アドレス(英語版)を保持していることに注意すること。 これはリターン命令 jmp 0,3 によって使用される。 アキュムレータをクリアする慣用的な方法は sub 0,0 である。 他の単一命令は、有用な定数の特定のセット(たとえば、-2、-1、または+1)をロードするように配置することができる。 mpy:; multiply AC0 <- AC1 * AC2, by Toby Thain sub 0,0; clear result mbit:movzr 1,1,szc; shift multiplier, test lsb add 2,0; 1: add multiplicand movzl 2,2,szr; shift and test for zero jmp mbit; not zero, do another bit jmp 0,3; return
※この「16ビット乗算」の解説は、「データゼネラルNova」の解説の一部です。
「16ビット乗算」を含む「データゼネラルNova」の記事については、「データゼネラルNova」の概要を参照ください。
- 16ビット乗算のページへのリンク