私は、物理スイッチを使って手動でプログラムを供給されている8ビットPC上でvideoを見ました。コンピュータはデータと命令をどのように区別しますか?
給餌プログラムは以下のとおりであった:指示からデータを分割なしのフラグが存在しないので、私が知りたいのは何
MAIN:
0000 0001 0100 # 0 = LDA [4]
0001 0010 0101 # 1 = ADD [5]
0010 0101 0000 # 2 = OUT
0011 1111 0000 # 3 = HLT
DATA:
0100 00001110 # 4 = #14
0101 00011100 # 5 = #28
は、それがない場合、コンピュータは、データと命令を区別する方法です。
0001 0001 0010はどちらかと解釈することができる。
1 = LDA [2]
か:プログラムの実行中に、アドレスが命令として扱われるため
1 = #10
がそれです。 HLTのために、プログラムはあたかもそれらが命令であるかのようにメモリアドレスの実行を停止し、より高いアドレスを残す。 LDA/ADD/SUBなどはメモリ内のすべての場所をバイナリ値として扱います。この質問を書いている間、私があったように、私は新しいことを実現**
0 = ADD #32
なく
0 = ADD [ ADD [ ADD [ ADD ...]]]
:その場合は
は、なりますよう
0000 0010 0000を解釈します進行中
さらに良い例:
停止がなかった場合は、プログラムの作業罰金が、その後のデータに下って行く上で続けるだろうとのように解釈されます。その場合は、コンピュータがクラッシュ1が考え
0010 0000 1110 # 4 = NOP [14]
0101 0001 1100 # 5 = LDA [12]
:NOPが指定されているので、オペランド、および2:メモリアドレス12と14は定義されていないためです。
ここでは良い回答と同様のトピック:[stackoverflow_link](http://stackoverflow.com/questions/2022489/how-instructions-are-differentiated-from-data)。 – acornagl
あなたは[The Story of Mel](http://www.catb.org/jargon/html/story-of-mel.html)を楽しむかもしれません: "...彼が書いたすべての命令は、数字の定数でもあると考えられます。 ... " –