임의의 프로그램을 실행하는 데 사용할 프로세서를 만드는 경우 제거 할 수있는 최소 지침 집합 (ISA)은 무엇입니까?필요한 최소 조립 지침은 무엇입니까?
나는 생각했다 :
ALU-OPS는 (추가, 뺄셈, 곱셈, 나눗셈)
로드 등록, [주소]
스토어의 등록, [주소]
Branch-if 조작. 동일하지 않을 경우 경우 < (branchif의 REG1, REG2, LABEL)이
당신은 어떻게 생각하면,>, 지점을 가지고 있을까요?
임의의 프로그램을 실행하는 데 사용할 프로세서를 만드는 경우 제거 할 수있는 최소 지침 집합 (ISA)은 무엇입니까?필요한 최소 조립 지침은 무엇입니까?
나는 생각했다 :
ALU-OPS는 (추가, 뺄셈, 곱셈, 나눗셈)
로드 등록, [주소]
스토어의 등록, [주소]
Branch-if 조작. 동일하지 않을 경우 경우 < (branchif의 REG1, REG2, LABEL)이
당신은 어떻게 생각하면,>, 지점을 가지고 있을까요?
기술적으로는 One Instruction 만 필요합니다. 그것은 수학과 조건부 분기를해야합니다. 예 : 음수 일 경우 빼기 및 분기.
다른 명령어로 빌드 할 수있는 명령어는 필요하지 않습니다.
그래서, mul
또는 div
이 필요하면 반복되는 더하기 또는 빼기 및 sub
필요없이 당신이 neg
(부정)가있는 경우 그렇게 할 수 있기 때문에 숫자는 2의 보수와 마찬가지로 바꿈됩니다.
그리고 확실하게 두 개의 분기 명령, 동등한 하나,보다 적은 하나 -로 구성 될 수 있습니다. 다른 모든 것들은 그 조합으로 만들 수 있습니다.
I/O 지침이 없으므로 다른 장치와의 통신이 메모리 액세스 인 경우 메모리 매핑 I/O를 사용해야 할 수 있습니다.
네이티브 push
및 pop
이 없으면 전용 레지스터 (및 레지스터 위치 이동이없는 것으로 보이는 메모리 위치)를 사용하여 자체 스택을 구현해야 할 수 있습니다.
이제는 멋진 아키텍처가 아니지만 작동해야합니다. 매트릭스 아키텍트 (Matrix Architect)는 "우리가 받아 들일 준비가되어있는 수준의 생존이있다"고 말했다.
제쳐두고, RCA1802 CPU를 살펴보십시오 (요일로부터). 그것은 이 아니고 전용 프로그램 카운터 또는 스택 포인터를 가지고 있었고, 소프트웨어의 모든 것을 구현했습니다 (자세한 내용은 here 참조).
8085에서 프로그래밍하는 동안 나는 같은 것을하기위한 몇 가지 방법이 있다고 느꼈다. 따라서 이것이 사실 인 경우 명령 집합이 최소가 아니라는 것을 알고 있습니다.
다음 지침을 제안합니다 : 스토어를 추가, 보완, 논리 AND, OR 및로드합니다. 조건부 및 무조건 부울 점프.
대부분의 다른 명령어는 위의 명령어로 수행 할 수 있습니다.
편집 : 그냥 (8085 기준) 조립 설명서를 나열하려면 : 3 개 레지스터가 특징
내가 모델을 고려할 것입니다. 같은 A 조작과 = B + C
ADD의 B, C (A = B + C)
CMA (A = A ')
OR B, C (A = B OR C) JMP의 XXXX (SET PC는 제로 플래그가 설정되어있는 경우() 점프)
참고
LDA의 XXXX (XXXX 주소의 내용)
STA XXXX
JZ의 XXXX와 부하 A를 XXXX합니다 : 나는 복사 할 추가 명령을 실현 레지스터 사이에서 데이터가 매우입니다 유능한. 그러나 생략 될 수 있습니다. 그것없이 할 수없는 경우를 제시하십시오.
레지스터 기반 머신을 설명하고 있습니다. 스택 기반 머신은 항상 더 간단합니다. 몇 가지 PUSH/POP 및 물론 JUMP/JUMPT/JUMPF ... 오와 고정 명령 길이가있는 표준 산술/논리 연산자. –
우리는 8085 마이크로 프로세서를 배웠고 div의 네이티브 구현을 가지지 않았습니다. :) – Shubham
이것이 http://programmers.stackexchange.com에 속하면 궁금해할까요? –