PDP-11 to komputer Model PDP ( Programmable Data Processor ) linii zbudowanej przez Digital Equipment Corporation (DEC) między 1970 a 1993 r .
Wszystkie PDP-11 są 16- bitowe i należą do klasy minikomputerów . Były niezwykle popularne, ponieważ łączyły w sobie modułowość, doskonały stosunek jakości do ceny, a ich zastosowanie nie ograniczało się do jednego sektora aplikacji: znajdowano je również w laboratoriach fizycznych do pozyskiwania danych, niż w firmach księgowych. Wreszcie świat uniwersytecki również nabył dużą liczbę takich maszyn.
Zakres ten jest również popularny, ponieważ służył jako podstawa rozwoju w Unix operacyjnego systemu i języka C . Preinkrementacja (++ i) i postinkrementacja (i ++) C umożliwiły w szczególności wykorzystanie tej możliwości języka maszynowego PDP-11.
Zdarzyło się to również, gdy IBM 1130 wprowadzony na rynek w 1969 roku, który wyposażał wiele laboratoriów i szkół inżynierskich na całym świecie, zaczął się starzeć bez następcy zaproponowanego przez IBM. Oprócz ogromnej biblioteki darmowego oprogramowania, 1130 nie miał żadnej szczególnej przewagi nad PDP-11 pod względem szybkości ani kosztów.
Podobnie jak wiele innych, ten zakres zniknął, ponieważ jego przestrzeń adresowa pamięci była zbyt ograniczona (16 do 18 bitów , najwyżej 22). Został zastąpiony przez VAX , co oznacza Virtual Address eXtension , 32 bity. VAX posiada tryb pracy „kompatybilnym PDP-11.”
Pierwsze PDP-11 zostały zbudowane wokół magistrali UNIBUS . Najnowsze modele, z zestawem instrukcji zawartym w niektórych układach, zwane LSI-11 , są oparte na (węższej) magistrali o nazwie Q-BUS .
Procesor z PDP-11 ma 8 rejestrów , z których dwa mają szczególne zastosowanie: rejestr 7, PC (dla Programu licznika lub licznika programu) oraz rejestr 6, wskaźnika od stosu (SP, aby wskaźnik stosu ). Pozostałe rejestry R0, R1, ..., R5 i mają ogólne zastosowanie. Ostatni rejestr to rejestr statusu.
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)Znaczenie flag w rejestrze statusu to:
Nie wszystkie modele PDP-11 mają dokładnie ten sam typ rejestrów stanu, ten pokazany tutaj odpowiada bardziej zaawansowanym modelom.
Istnieją trzy klasy:
Istnieją trzy możliwe zestawy instrukcji:
Każda instrukcja określa operację do wykonania, ewentualnie operandy (rejestry itp.) Oraz tryb adresowania .
PDP-11 definiuje 7 formatów. We wszystkich formatach opisanych poniżej:
Pole trybu zawiera 3 bity. Na przykład instrukcja składająca się z dwóch argumentów zawiera dwa pola rejestru i dwa pola trybu, z których każde opisuje sposób interpretacji pola rejestru.
Jeśli weźmiemy pod uwagę tylko skrajne lewe bity (trzeci to bit pośredni, patrz poniżej):
Najbardziej prawy bit trybu jest bitem pośrednim: jeśli ten bit jest jeden, adresowanie będzie pośrednie:
Zauważ, że nie ma trybu „natychmiastowego”: jest to realizowane przy użyciu trybu 2 (autoinkrementacja). Rzeczywiście, komputer PC wskazuje na słowo, które następuje po instrukcji, a postinkrementacja powoduje, że przechodzi do następnej instrukcji po załadowaniu przez procesor natychmiastowej wartości następującej po wykonywanej instrukcji.
Używanie komputera jako rejestru tworzy zatem 4 nowe tryby:
Tryby adresowania postinkrementowane i pre-dekrementowane będą używane w szczególności w połączeniu ze wskaźnikiem stosu SP: - (SP) umożliwiającym układanie w stos i (SP) + rozpakowywanie.
Przykład: CLR (R0) 005010
Przykład: ADD R0, (R1)
Uwaga: niektóre instrukcje (ASH, ASHC, MUL, DIV) mogą mieć tylko jeden rejestr jako źródło, w tym przypadku kod operacji rozciąga się od bitu 9 do bitu 15:
15 11 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ source destinationPole przemieszczenia jest podpisane, co pozwala na przesunięcie od -128 do +127 bajtów.
W przypadku instrukcji JSR (Jump to Subroutine):
15 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ lien destinationDla instrukcji RTS (Return from Subroutine):
15 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ lienEMT, TRAP, BPT, IOT, CSM, RTI, RTT: brak określonego formatu.
CLC, CLV, CLZ, CLN, CCC, SEC, SEV, SEZ, SEN, SEC: brak określonego formatu.
15 5 3 2 1 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | O | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+HALT, WAIT, RESET, MTPD, MTPI, MFPD, MFPI, MTPS, MFPS, MFPT: brak określonego formatu.
Ta opcja nosi nazwę FPP lub FP-11 , FP for Floating Point . Dodaje 6 nowych 64-bitowych rejestrów (dwa razy 32) do obliczeń, a także kilka innych wyspecjalizowanych (takich jak rejestr stanu). Działanie zmiennego procesora różni się od standardowego procesora PDP-11: poza niewielkim opóźnieniem, gdy pływający procesor pobiera instrukcję z pamięci, dwa procesory obliczają niezależnie.
Ten nowy zestaw instrukcji jest dostępny po zmianie mikrokodu .
Nazywany CIS, od komercyjnego zestawu instrukcji , ten zestaw instrukcji koncentruje się głównie na zarządzaniu ciągami znaków i ma na celu przyspieszenie operacji zwykle wymaganych przez programy do zarządzania ( na przykład napisane w języku COBOL ).
Umożliwia konwersję reprezentacji liczb w postaci znaków na wartości binarne (i odwrotnie) lub obliczenia bezpośrednio na reprezentacjach „ciągów znaków”.