計算動作の例
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/03/18 05:14 UTC 版)
(このような動作をベースとしている計算モデルやコンピュータを、スタックマシンと言う) 例題として以下の式を考える。スタックの他に1個のアキュムレータを持つ計算機だとする。 3 4 + 1 2 - * []はスタックの内容。左から右に積む。最初は空である。 3をスタックに積む [3] 4をスタックに積む [3 4] +が押されたら、スタックからデータを下ろしアキュムレータに入れる(アキュムレータ ← 4) [3] スタックからデータを下ろしアキュムレータを足してアキュムレータに入れる(アキュムレータ ← POPした値 + アキュムレータ) [] アキュムレータの内容は 7 になる (3 + 4 = 7) アキュムレータの内容をスタックに積む [7] 1をスタックに積む [7 1] 2をスタックに積む [7 1 2] -が押されたら、スタックからデータを下ろしアキュムレータに入れる(アキュムレータ ← 2) [7 1] スタックからデータを下ろしアキュムレータを引いてアキュムレータに入れる(アキュムレータ ← POPした値 - アキュムレーター) [7] アキュムレータの内容は -1 になる (1 - 2 = -1) アキュムレータの内容をスタックに積む [7 -1] *が押されたら、スタックからデータを下ろしアキュムレータに入れる(アキュムレータ ← -1) [7] スタックからデータを下ろしアキュムレータを掛けてアキュムレータに入れる(アキュムレータ ← POPした値 * アキュムレーター) [] アキュムレータの内容は -7 になる (7 * -1 = -7) アキュムレータの内容をスタックに積む [-7] このように スタックにデータを積む (PUSH) 操作 スタックからデータを下ろす (POP) 操作 二つのオペランド間の演算 だけで計算動作が可能である。 スタックトップの直接演算が可能な構造ならば、例えば最初の部分は 3をスタックに積む [3] 4をスタックに積む [3 4] +が押されたら、スタックからデータを下ろしレジスタに入れる(レジスタ←4) [3] スタックトップにレジスタの値を加算する [7] と簡略化される。
※この「計算動作の例」の解説は、「逆ポーランド記法」の解説の一部です。
「計算動作の例」を含む「逆ポーランド記法」の記事については、「逆ポーランド記法」の概要を参照ください。
- 計算動作の例のページへのリンク