Um PDP-11 é um modelo de computador da linha PDP ( Programmable Data Processor ) construída pela Digital Equipment Corporation (DEC) entre 1970 e 1993 .
Todos os PDP-11s são de 16 bits e se enquadram na classe de minicomputadores . Eles eram extremamente populares porque combinavam modularidade, uma excelente relação qualidade / preço, e seu uso não se limitava a um único setor de aplicação: eles também eram encontrados em laboratórios de física para aquisição de dados, do que em firmas de contabilidade. Finalmente, o mundo acadêmico também adquiriu um grande número dessas máquinas.
Esta gama também é popular porque serviu como base para o desenvolvimento do Unix operacional do sistema ea linguagem C . A pré-incrementação (++ i) e a pós-incrementação (i ++) de C tornaram possível, em particular, explorar esta possibilidade da linguagem de máquina PDP-11.
Aconteceu também quando o IBM 1130 lançado em 1969, que equipou muitos laboratórios e escolas de engenharia ao redor do mundo, começou a envelhecer sem ter um sucessor proposto pela IBM. Além de sua enorme biblioteca contributiva de software livre, o 1130 não tinha nenhuma vantagem particular sobre o PDP-11 em termos de velocidade ou custo.
Como muitos outros, esse intervalo desapareceu porque seu espaço de endereço de memória era muito limitado (16 a 18 bits , 22 no máximo). Foi substituído pelo VAX , que significa Virtual Address eXtension , 32 bits. O VAX possui um modo de operação “PDP-11 compatível”.
Os primeiros PDP-11s foram construídos em torno do barramento UNIBUS . Os modelos mais recentes, com o conjunto de instruções incluído em alguns chips, e chamados LSI-11 , são baseados no barramento (mais estreito) chamado Q-BUS .
O processador do PDP-11 possui 8 registradores , dois dos quais têm usos especiais: o registrador 7, o PC (para Program Counter ou program counter) e o registrador 6, o ponteiro da pilha (SP, para Stack Pointer ). Os outros registram R0, R1, ..., R5 e são de uso geral. O último registro é o registro de status.
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)Os significados dos sinalizadores no registro de status são:
Nem todos os modelos PDP-11 têm exatamente o mesmo tipo de registrador de status, o mostrado aqui corresponde aos modelos mais avançados.
Existem três classes:
Existem três conjuntos de instruções possíveis:
Cada instrução especifica uma operação a ser executada, possivelmente operandos (registradores, etc.) e um modo de endereçamento .
O PDP-11 define 7 formatos. Em todos os formatos descritos abaixo:
O campo de modo é mantido em 3 bits. Por exemplo, uma instrução de dois operandos contém dois campos de registro e dois campos de modo, cada um descrevendo como interpretar o campo de registro.
Se considerarmos apenas os bits mais à esquerda (o terceiro é o bit de indireção, veja abaixo):
O bit mais à direita do modo é o bit de indireção: se este bit for um, o endereçamento será indireto:
Observe que não há modo “imediato”: isso é feito usando o modo 2 (incremento automático). De fato, o PC aponta para a palavra que segue a instrução, e a pós-incrementação a faz passar para a próxima instrução após o valor imediato após a instrução sendo executada ser carregado pelo processador.
Usar o PC como um registro, portanto, cria 4 novos modos:
Os modos de endereçamento pós-incrementado e pré-decrementado serão usados em particular em associação com o ponteiro da pilha SP: - (SP) permitindo empilhar e (SP) + desempilhar.
Exemplo: CLR (R0) 005010
Exemplo: ADD R0, (R1)
NB: algumas instruções (ASH, ASHC, MUL, DIV) podem ter apenas um registro como fonte, neste caso o código de operação se estende do bit 9 ao bit 15:
15 11 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ source destinationO campo de deslocamento é sinalizado, permitindo, portanto, um deslocamento de -128 a +127 bytes.
Para a instrução JSR (Jump to Subroutine):
15 9 8 6 5 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | mode | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ \_____________________/ lien destinationPara a instrução RTS (Retorno da Subrotina):
15 3 2 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | Rn | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ \_________/ lienEMT, TRAP, BPT, IOT, CSM, RTI, RTT: nenhum formato específico.
CLC, CLV, CLZ, CLN, CCC, SEC, SEV, SEZ, SEN, SEC: nenhum formato específico.
15 5 3 2 1 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | code opération | O | N | Z | V | C | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+HALT, WAIT, RESET, MTPD, MTPI, MFPD, MFPI, MTPS, MFPS, MFPT: nenhum formato específico.
Esta opção é chamada FPP ou FP-11 , FP para Ponto Flutuante . Ele adiciona 6 novos registradores de 64 bits (duas vezes 32) para os cálculos, bem como alguns outros especializados (como um registrador de status). A operação do processador flutuante é diferente do processador padrão do PDP-11: além de um ligeiro atraso quando o processador flutuante busca a instrução na memória, os dois processadores calculam independentemente.
Este novo conjunto de instruções está disponível alterando o microcódigo .
Chamado CIS, para Commercial Instruction Set , este conjunto de instruções focado principalmente no gerenciamento de cadeias de caracteres é projetado para acelerar as operações normalmente exigidas por programas de gerenciamento (escritos em COBOL, por exemplo).
Permite a conversão da representação de números na forma de caracteres em valores binários (e vice-versa) ou cálculos diretamente em representações de "string de caracteres".