En PDP-11 er en datamaskin modell av PDP ( programmerbar databehandler ) varierer bygget av Digital Equipment Corporation (DEC) mellom 1970 og 1993 .
Alle PDP-11 er 16- bit og faller inn i klassen minidatamaskiner . De var ekstremt populære fordi de kombinerte modularitet, et utmerket forhold mellom kvalitet og pris, og bruken av dem ikke var begrenset til en eneste applikasjonssektor: de ble også funnet i fysikklaboratorier for datainnsamling enn i regnskapsbyråer. Endelig har den akademiske verden også anskaffet et stort antall av disse maskinene.
Dette området er også populært fordi det fungerte som grunnlag for utviklingen av Unix- operativsystemet og C-språket . Preinkrementasjonen (++ i) og postinkrementasjonen (i ++) av C gjorde det mulig å utnytte denne muligheten for maskinspråket PDP-11.
Det skjedde også da IBM 1130 ble lansert i 1969, som utstyrte mange laboratorier og ingeniørskoler over hele verden, begynte å eldes uten å ha en etterfølger foreslått av IBM. Bortsett fra det enorme bidragsbiblioteket med gratis programvare, hadde ikke 1130 noen spesiell fordel over PDP-11 når det gjelder hastighet eller kostnad.
Som mange andre har dette området forsvunnet fordi minneadresseplassen var for begrenset (16 til 18 bits , maksimalt 22). Den ble erstattet av VAX , som står for Virtual Address eXtension , 32 bits. Den VAX har en driftsmodus "kompatibel PDP-11."
De første PDP-11-ene ble bygget rundt UNIBUS- bussen . De nyeste modellene, med instruksjonssettet inkludert på noen sjetonger, og kalt LSI-11 , er basert på den (smalere) bussen som heter Q-BUS .
Den prosessor av PDP-11 har 8 registre , hvorav to har spesielle anvendelser: registeret 7, den PC (for programteller eller programteller) og registeret 6, den pointer av stabelen (SP, til stakkpekeren ). De andre registrerer R0, R1, ..., R5 og er av generell bruk. Det siste registeret er statusregisteret.
15 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R0 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R1 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R2 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R3 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R4 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R5 | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R6 (SP) | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | R7 (PC) | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________________________________________________/ registres (16 bits) 15 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | CM | PM | R | | PRI | T | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_____________________________________________________________/ registre d'état(16 bits)Betydningene av flaggene i statusregisteret er:
Ikke alle PDP-11-modeller har nøyaktig samme type statusregistre, den som vises her tilsvarer de mer avanserte modellene.
Det er tre klasser:
Det er tre mulige instruksjonssett:
Hver instruksjon spesifiserer en operasjon som skal utføres, muligens operander (registre, etc.) og en adresseringsmodus .
PDP-11 definerer 7 formater. I alle formater beskrevet nedenfor:
Den modus felt holder på 3 bits. For eksempel inneholder en to-operand instruksjon to registerfelt og to modusfelt, som hver beskriver hvordan registerfeltet skal tolkes.
Hvis vi bare betrakter de venstre bitene (den tredje er retningen, se nedenfor):
Den høyre biten i modusen er indireksjonsbiten: hvis denne biten er en, vil adresseringen være indirekte:
Merk at det ikke er noen "umiddelbar" modus: dette oppnås ved hjelp av modus 2 (autoinkrementering). Faktisk peker PCen mot ordet som følger instruksjonen, og etterøkrementeringen får den til å gå videre til neste instruksjon etter at den umiddelbare verdien etter at instruksjonen blir utført er lastet inn av prosessoren.
Å bruke PCen som et register skaper derfor fire nye moduser:
Adressemodusene etter inkrementert og pre-decremented vil bli brukt spesielt i forbindelse med stabelpekeren SP: - (SP) som muliggjør stabling og (SP) + unstacking.
Eksempel: CLR (R0) 005010
Eksempel: ADD R0, (R1)
NB: noen instruksjoner (ASH, ASHC, MUL, DIV) kan bare ha ett register som kilde, i dette tilfellet strekker operasjonskoden seg fra bit 9 til bit 15:
15 11 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ source destinationDen forskyvning felt er signert, derfor tillater en forskyvning på -128 til 127 bytes.
For JSR (Jump to Subroutine) instruksjon:
15 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ lien destinationFor instruksjoner om RTS (Return from Subroutine):
15 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ lienEMT, TRAP, BPT, IOT, CSM, RTI, RTT: ikke noe spesifikt format.
CLC, CLV, CLZ, CLN, CCC, SEC, SEV, SEZ, SEN, SEC: ikke noe spesifikt format.
15 5 3 2 1 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | O | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+HALT, WAIT, RESET, MTPD, MTPI, MFPD, MFPI, MTPS, MFPS, MFPT: ikke noe spesifikt format.
Dette alternativet kalles FPP eller FP-11 , FP for flytende punkt . Den legger til 6 nye 64-bitersregistre (to ganger 32) for beregningene, i tillegg til noen andre spesialiserte (som et statusregister). Operasjonen til den flytende prosessoren er forskjellig fra standardprosessoren til PDP-11: bortsett fra en liten forsinkelse når den flytende prosessoren henter instruksjonene i minnet, beregner de to prosessorene uavhengig.
Dette nye settet med instruksjoner er tilgjengelig ved å endre mikrokoden .
Kalt CIS, for Commercial Instruction Set , dette settet med instruksjoner som hovedsakelig fokuserer på håndtering av tegnstrenger er designet for å øke hastigheten på operasjonene som vanligvis kreves av ledelsesprogrammer (skrevet i COBOL for eksempel).
Det tillater konvertering av representasjonen av tall i form av tegn til binære verdier (og omvendt) eller beregninger direkte på "tegnstreng" -representasjoner.