2012-05-21 3 views
5

영숫자 x86 opcode의 최소한의 계산 상 범용 서브 세트를 만들려고합니다. 결국에는 하위 집합에 가능한 한 적은 수의 명령어가 포함되도록하고, 여러 개의 하위 집합이있는 경우이를 알고 싶습니다. 서브 세트는 전체 영숫자 명령어 세트로 작성 될 수있는 프로그램을 시뮬레이트 할 수 있어야합니다. 지침에는 "A-Z", "a-z"및 "0-9"문자에 해당하는 지침 만 포함해야합니다.Turing Complete 영숫자 x86 명령어 세트 (서브셋)

지금까지 나는 push, pop, inc는, dec, cmpje 충분 것이라고 생각하지만, 나는 작은 세트가 확신합니다. 내가 생성하는 세트가 모든 영숫자 명령어를 사용하여 모든 프로그램을 시뮬레이션 할 수 있다는 것을 증명할 수있는 방법은 무엇입니까? 그러한 세트가 최소한이라는 것을 어떻게 증명할 수 있습니까? 그러한 명령어 하위 집합이 존재하는지 아는 사람 있습니까?

+2

반드시 목록에서 'inc'또는 'dec'중 하나를 삭제할 수 있습니다. 둘 다 가질 필요는 없습니다. :) –

+1

'inc'와 'dec'을 하나의 음수 - 수락 'add'로 대체 할 수 없습니까? – Nyerguds

+1

알렉세이 (Alexey)가 말했듯이 결국에는 "inc"또는 "dec"중 하나만 필요합니다. 결국 오버플로가 발생하기 때문입니다. – cytinus

답변

0

그것은 단지 하나의 명령입니다! 여기 증거

http://en.wikipedia.org/wiki/One_instruction_set_computer

? "명령"은 기계에 의존하는 개념이기 때문입니다. 그러한 보편적/절대적/원자 적 명령이 없기 때문에 작은 명령 세트를 정의 할 수는 없습니다. 모든 하드웨어는 기본 하드웨어에 달려 있습니다. 실제로 "실제"튜링 기계는 실제가 아닌 수학 개념 (일련의 규칙)입니다. 기계

+0

이것은 매우 구체적 인 내 질문과는 아무런 관련이 없습니다. – cytinus

+0

하지만 지침을 따라 가서 x86 지침으로 나눌 수 있습니다. 예를 들어 SBNZ는'sub'와'jne'을 사용하여 달성 할 수 있습니다.'SUBNEG'는'sub'와'js'를 사용하여 에뮬레이션 될 수 있습니다 ... –

1

귀하의 질문, 특히 "영숫자"에 관한 부분을 모르겠지만 movxor 모두 튜링이 완료되었음을 잘 알고 있습니다.

관련 문제