3 アセンブラを通してのコンピューターの動作

ここで示しているプログラムは、先週の実習で動かしたプログラムです。もう 一度、チューリング機械あるいはノイマン型コンピューターとして、このプロ グラムの意味を考えます。この辺ことを理解するには、高級言語よりも、アセ ンブラ言語で考えるのが適切です。アセンブラ言語は、ハードウェアーと完全 に1対1に対応しているからです。

3.1 データと命令の区別がない例

次のプログラムは、1+1を計算する典型的なプログラムです。最後の実行文' C DC 0 'が' C DS 1 'と書かなくてはならないと考える人がいると思います。 チューリング機械、あるいはノイマン型コンピューターなので、それはどちら でも同じであることが分かると思います。このアドレスCには計算結果を格納 するので、' C DC 0 'で0に初期化して1ワード確保しても、' C DS 1 'で初 期化無しで1ワード確保しても同じです。

このプログラムは、命令とデータが区別されています。命令は'LD GR0,A'から、' RET'までです。データは、ラベルA, B,Cの部分です。命令とデータが区別でき るのはプログラマだけです。コンピューターにとっては、これをアセンブルし た機械語しか分からないので、どれが命令でどれがデータかは分かりません。 コンピューターにとって、命令であろうとデータであろうとただの1と0のビッ トの集まりにすぎません。後は、チューリング機械のように、それに従い動く だけです。

      PGM   START
            LD     GR0,A
            ADDA   GR0,B
            ST     GR0,C
            RET
      A     DC     1
      B	    DC     1
      C	    DC     0
            END

次のプログラムを見てください3。これは、プログラマ から見るとデータの集まりです。しかし、コンピューターから見ると全く異なっ て見えます。この辺の事情は先週のプログラムの実習で体験したとおり、先の アセンブラのプログラムと全く同じです。さきのアセンブラのプログラムを機 械語にしたものを、ここではDC命令でメモリー上に書き込んでいるからです。

以上で、ノイマン型のコンピューターは命令とデータの区別が無いことが分かっ たと思います。

      PGM   START  NEXT
      NEXT  DC     #1000
            DC     #0027
            DC     #2000
            DC     #0028
            DC     #1100
            DC     #0029
            DC     #8100
            DC     #0001
            DC     #0001
            DC     #0000
            END

3.2 命令を作りながらの実行

これは、もう少し野心的なプログラム4で、プログラム自身が 命令を書き換えて、それを実行するようになっています。これ も、チューリング機械だからこそできる芸当です。このプログラムの主な動作は、 です。要するに、ラベルONEとTWOの命令が実行されるのですが、この命令はこ のプログラム自身が作っています。プログラムを作りながらプログラムを実行 していることになっています。
      PGM   START
            LAD    GR1,-1
      ONE   NOP
      TWO   NOP
            LAD    GR1,1,GR1
            LD     GR2,P,GR1
            ST     GR2,ONE
            LAD    GR1,1,GR1
            LD     GR2,P,GR1
            ST     GR2,TWO
            JUMP   ONE
      A     DC     1
      B     DC     1
      C     DC     0
      P     DC     #1000
            DC     #0032
            DC     #2000
            DC     #0033
            DC     #1100
            DC     #0034
            DC     #8100
            END



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年8月21日


no counter