물리 스위치를 사용하여 수동으로 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 등은 메모리의 모든 위치를 이진 값으로 처리합니다. I이었다으로이 질문을 쓰는 내가 새 일을 실현하는 동안 **
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
당신은 [멜의 이야기] (http://www.catb.org/jargon/html/story-of-mel.html)를 즐길 수도 있습니다 : "... 그가 작성한 모든 명령은 수치 상수 인 으로 간주 될 수도 있습니다 ... " –