MMIX

위키백과, 우리 모두의 백과사전.

MMIX 로고.

MMIX도널드 커누스가 만든 64비트 RISC 가상기계이다. MIPS 칩을 만든 존 L. 헤네시DEC 알파 칩을 설계한 딕 사이츠도 MMIX의 설계에 많은 기여를 했다. 카누스에 따르면 앞으로 그가 쓰는 The Art of Computer Programming (TAoCP)에서는 MMIX를 이용하여 컴퓨터 프로그래밍의 기계 수준 알고리즘 분석을 할 것이라고 한다. MMIX는 '엠믹스'라고 읽는다.

MMIX의 이전 버전인 MIXThe Art of Computer Programming의 현재판까지만 사용된다. MMIX는 컴퓨터 설계에 대한 현대적인 접근방법을 모두 채택하여 처음부터 새로 만들어졌으며 기존의 MIX를 완전히 대체할 것이다.

구조[편집]

MMIX는 64 비트의 가상주소공간을 가진 빅 엔디안 형태의 이진 컴퓨터이다. 명령어는 32비트이다.

명령어[편집]

모든 명령어는 관련된 약어를 가지고 있다. 예를 들어 명령어 32는 'ADD'와 연결된다. 대부분의 명령은 "OP, X, Y, Z"과 같은 형태를 따른다. 여기서 OP는 명령어에 해당하고, X는 결과값을 저장할 레지스터이다. 나머지는 명령어에 인자로 사용할 값들을 저장한다. 여기서 명령어의 각 부분은 모두 8비트이다. 예를 들어 "ADD $0, $1, 3"라는 명령은 1번 레지스터의 값에 3을 더해서 그 결과값을 0번 레지스터에 저장한다."라는 의미이다. MMIX 프로그램은 보통 MMIXAL 어셈블리 언어로 구성된다.

Hello world 프로그램[편집]

MMIXAL로 Hello, world를 출력하는 프로그램이다.

Main GETA $255,string ; Get the address of the string
                                        ; in register 255.

        TRAP  0,Fputs,StdOut            ; Put the string pointed to
                                        ; by register 255 to file StdOut.

        TRAP  0,Halt,0                  ; End process.

string BYTE "Hello, world!",#a,0 ; String to be printed.
                                        ; #a is newline,
                                        ; 0 terminates the string.

레지스터[편집]

MMIX 칩에는 $0부터 $255까지 256개의 범용 레지스터와 32개의 특수 레지스터가 있다.

지역 레지스터 스택[편집]

특수 레지스터[편집]

참고 문헌[편집]

  • Donald E. Knuth (1999). MMIXware: A RISC Computer for the Third Millennium. Heidelberg: Springer-Verlag. ISBN 3-540-66938-8(errata) Archived 2011년 7월 16일 - 웨이백 머신

외부 링크[편집]