Donald Knuth の Art of Computer Programming の第 1 巻を読んでいます。今、すべての数学が説明されている最初の部分を読み終えました。とても楽しかったです。残念ながら、p。MIX
121彼は、実際の機械語に基づいて呼び出されたこの架空の機械語の説明を開始し、その後、すべてのアルゴリズムを説明します.クヌース氏は私を完全に失いました.
MIX
ここに誰かが「話し」、それを理解するのを手伝ってくれることを願っています. 具体的には、彼はさまざまな操作を説明し、例を示し始めたところで私を失いました (p. 125 以降)。
Knuth は、この「命令形式」を次の形式で使用します。
彼はまた、異なるバイトが何を意味するのかを説明しています:
したがって、右側のバイトは実行される操作です (たとえば、LDA
「レジスタ A のロード」)。F バイトは、8L + R を使用したフィールド指定 (L:R) を持つ操作コードの変更です (たとえば、C=8 および F=11 は、「(1:3) フィールドでレジスタをロードします)。その後、+/- AA はアドレスで、I はアドレスを変更するためのインデックス指定です。
まあ、これは私にとってある種の意味があります。しかし、Knuth はいくつかの例を示しています。最初の例はいくつかのビットを除いて理解できますが、2 番目の例の最後の 3 つについて頭を悩ませることはできず、以下の例 3 のより難しい操作からは何もわかりません。
最初の例を次に示します。
LDA 2000
完全な単語をロードするだけで、レジスタ A に完全に表示されrA
ます。2 番目のLDA 2000(1:5)
ものは、2 番目のビット (インデックス 1 ) から最後 (インデックス 5) までのすべてをロードします。これが、プラス記号を除くすべてがロードされる理由です。3 つ目はLDA 2000(3:5)
、3 番目のバイトから最後のバイトまですべてをロードするだけです。またLDA 2000(0:3)
、(4番目の例)意味があります。-803 をコピーして - を取り、80 と 3 を最後に配置します。
これまでのところ、番号 5 では、同じロジックに従うとLDA2000(4:4)
、4 番目のバイトのみが転送されます。それは確かに最後の位置にしました。ただしLDA 2000(1:1)
、最初のバイト (符号) のみをコピーする必要があります。これは奇妙です。最初の値が - ではなく + なのはなぜですか (私は - だけがコピーされると思っていました)。他の値がすべて 0 で、最後の値が疑問符なのはなぜですか?
次に、彼は操作STA
(ストア A)で 2 番目の例を示します。
繰り返しますがSTA 2000
、STA 2000(1:5)
とSTA 2000(5:5)
は同じロジックで意味をなします。ただし、Knuth はSTA 2000(2:2)
. レジスタ A の 7 に相当する 2 番目のバイトがコピーされることを期待するでしょう- 1 0 3 4 5
。私はこれらを何時間も見てきましたが、これがどのようにして、またはこの 1 つに続く 2 つの例 (STA 2000(2:3)
およびSTA 2000(0:1)
) が表示されている場所の内容になるのかわかりません。
ここにいる誰かが、これらの最後の 3 つに光を当ててくれることを願っています。
ADD
さらに、 、 、 、 、SUB
、MUL
、の操作を説明するページにも大きな問題がありますDIV
。3 番目の例を参照してください。
この 3 番目の例は、理解するための私の最終的な目標であり、現時点ではまったく意味がありません。彼のアルゴリズムを引き続き使用したいので、これは非常にイライラしますが、理解できなければMIX
残りの部分を理解することはできません!
ここにいる誰かがMIX
、私が見ていない何かについてのコースを受講したり、見たりして、彼または彼女の知識と洞察を喜んで共有してくれることを願っています!