わかりました、私は困惑しています。TAOCP vol1、第 3 版、セクション 1.3.2「The MIX Assembly language」は、配列の最大値を見つけるための簡単なアセンブリ プログラムを提供します。プログラムは、145 ページに、各命令が実行されると思われる回数と共に示されています。次のページには、「[...] サブルーチンを実行する時間の長さ; それは (5+5n+3A)u [...] です」と書かれています。
しかし: リストに示されているカウントを実際に合計すると、係数 (4+4n+2A) になります。このような不一致は、他のアルゴリズムでも発生します。たとえば、セクション 1.3.3 のプログラム A の分析では、Knuth は「単純な加算によって [..] (7+5A+...)」と書いています。実際に「単純足し算」をすると、(5+3A+…)
ここで何が起こっているのですか?
これは、括弧内のテキストからのカウントを横に並べた MIX コードです。入力しやすいように、ラベル名を 2 文字に短縮しました
X EQU 1000
ORIG 3000
MA STJ EX [1]
IN ENT3 0,1 [1]
JMP CH [1]
LO CMPA X,3 [n-1]
JGE *+3 [n-1]
CH ENT2 0,3 [A+1]
LDA X,3 [A+1]
DEC3 1 [n]
J3P LO [n]
EX JMP * [1]