Я смотрел видео на 8-битном компьютере, которому загружали программу - вручную, с использованием физики переключатели.
Кормленная программа была:
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]
or:
1 = #10
Это потому, что во время работы программы адреса обрабатываются как инструкции. но из-за HLT программа перестает выполнять адреса памяти, как если бы они были инструкциями, и оставляет более высокие адреса; а затем LDA / ADD / SUB и т. д. обрабатывают все места в памяти как двоичные значения.
В этом случае:
0000 0010 0000 интерпретируется как:
0 = ADD #32
и не
0 = ADD [ ADD [ ADD [ ADD ...]]]
** При написании этого вопроса я понял новые вещи по мере продвижения
лучший пример:
Если бы остановки не было, программа работала бы нормально, но затем продолжала бы переходить к данным и интерпретировать как:
0010 0000 1110 # 4 = NOP [14]
0101 0001 1100 # 5 = LDA [12]
Если это так, произойдет ли сбой компьютера: 1: потому что NOP задан операнд, и 2: потому что адреса памяти 12 и 14 не определены.