MMIX (uttalas em-mix ) är en 64-bitars RISC - datorarkitektur utvecklad av Donald Knuth med betydande bidrag från John Hennessy och Richard Sites. Med Donald Knuths ord själv:
MMIX - en dator vars syfte är att illustrera aspekter av programmering på maskinnivå. I mina böcker Konsten att programmera ersätter den MIX, en 1960-talsmaskin som spelade samma roll. Jag försökte designa den på MMIXett sådant sätt att dess maskinspråk var enkelt, elegant, lätt att lära sig. Samtidigt försökte jag få med all komplexitet som behövs för att uppnå hög effektivitet i praktiken, så att den MMIXkan byggas realistiskt och till och med vara konkurrenskraftig med några av de snabbaste generella datorerna på marknaden.
Originaltext (engelska)[ visaDölj]MMIXär en dator avsedd att illustrera maskinnivåaspekter av programmering. I mina böcker The Art of Computer Programming ersätter MIXden 1960-talsmaskinen som tidigare spelade en sådan roll... Jag strävade efter att designa MMIXså att dess maskinspråk skulle vara enkelt, elegant och lätt att lära sig. Samtidigt var jag noga med att inkludera alla de komplexiteter som behövdes för att uppnå hög prestanda i praktiken, så att MMIXdet i princip kunde byggas och till och med kanske vara konkurrenskraftigt med några av de snabbaste allmänna datorerna på marknaden.
Designad för undervisning, mycket lik arkitekturen hos John Hennessy och David Paterson DLX från Computer Architecture: A Quantitative Approach .
När Donald Knuth började skriva sin berömda bokserie Konsten att programmera 1962 , var han tvungen att bestämma vilket programmeringsspråk han skulle använda. För att lösa alla möjliga problem en gång för alla, samt för att bevara förmågan att beskriva lågnivåstrukturer och algoritmer i boken, bestämde sig författaren för att utveckla sin egen dator, designad speciellt för lärande. Han fick namnet . MIX
Men under de kommande tre decennierna skedde stora förändringar inom datateknikområdet. MIXi stort sett föråldrad. För att konsten att programmera ska fortsätta att vara en relevant informationskälla beslutade författaren att utveckla en ny dator - MMIXsom är en analog av datorer som erövrade större delen av marknaden på 90-talet av XX-talet.
MMIX är en 64-bitars datorarkitektur med 256 64-bitars register för allmänna ändamål och 32 64-bitars register för specialändamål. Den har 32-bitars instruktioner och ett 64-bitars adressutrymme. Datorns instruktionsuppsättning MMIXinnehåller 256 instruktionskoder, varav en är reserverad för framtida expansion. Implementerar flyttalsaritmetik enligt IEEE 754-standarden.
Varje instruktion har ett minnesmärke. Till exempel har instruktion 32 den mnemoniska ADD. De flesta instruktioner skrivs som "OP X,Y,Z", där OP är mnemoniken, X är registret till vilket resultatet av instruktionen kommer att skrivas och Y och Z är instruktionens operander. Vid kodning tilldelas 8 bitar för varje fält.
De flesta instruktioner kan ta en registeroperand eller ett omedelbart värde (omedelbart), så flera opkoder kan motsvara samma minnesminne.
MMIX-program är vanligtvis skrivna i MMIXAL assemblerspråk. Ett exempel på MMIXAL-program som visar textmeddelandet "Hej världen":
Huvud GETA $ 255 , sträng ; Skriv adressen till strängen för att registrera 255. TRAP 0 , Fputs , StdOut ; Mata ut strängen vars adress är i ; registrera 255 till filen StdOut. TRAP 0 , Halt , 0 ; Avsluta processen. string BYTE "Hej världen!" , # a , 0 ; Strängkonstant. ; #ett nyradstecken, ; 0 är linjeavslutningen.
MMIX-processorn har 256 allmänna register, betecknade $0 .. $255; och 32 särskilda arkitekturregister.
Två specialregister, rL och rG, styr uppdelningen av ROH i globalt och lokalt. Register i intervallet $0 ... ([rL] - 1) är lokala. Register i intervallet [rL] ... ([rG]-1) kallas "marginalregister". De returnerar 0 när du försöker läsa från dem, men om du använder en av dem som destination så kommer rL automatiskt att öka och det använda registret blir lokalt. Register i intervallet [rG] ... $255 är globala och lagras inte i registerstacken.
SpecialregisterFrån och med 2008 har MMIXdet ännu inte implementerats i hårdvara.
Datorns instruktionsuppsättning MMIXstöds av vissa programvaruutvecklingsprogram.
GNU Compiler Collection stöder kompilering av C / C++- program till målarkitekturen MMIX.
Donald Knuth | |
---|---|
Publikationer |
|
programvara | |
Teckensnitt |
|
Kompetent programmering |
|
Algoritmer |
|
Övrig |
|