Programa de Montagem Ideal Simbólica - Symbolic Optimal Assembly Program

Formulário de codificação SOAP II, 1957

O Symbolic Optimal Assembly Program (SOAP) é um montador para a IBM 650 Magnetic Drum Data-Processing Machine, um dos primeiros computadores usado pela primeira vez em 1954. Foi desenvolvido por Stan Poley no IBM Thomas J. Watson Research Center . SOAP é chamado Optimal (ou Optimum ), porque ele tenta armazenar instruções geradas no tambor de armazenamento para minimizar o tempo de acesso de uma instrução para a próxima. SOAP é um multi-pass assembler, ou seja, ele processa o programa de código mais de uma vez, a fim de gerar o programa objeto .

A primeira versão do SOAP foi substituída pelo SOAP II em 1957, que oferecia suporte a recursos de hardware adicionais, como registradores de índice e memória de núcleo magnético , SOAP IIA em 1958, SOAP 2L, SOAP 2L Tape, SOAP 4000 e SOAP 42 em 1961. SOAP foi usado como backend para o compilador FOR TRANSIT em 1957.

Donald Knuth produziu independentemente versões chamadas SOAP III em 1958 e SUPERSOAP em 1959 no Case Institute of Technology, agora parte da Case Western Reserve University em Cleveland, Ohio . O Bureau Nacional de Padrões dos EUA , sob a direção de Herbert Howe, também escreveu uma versão do SOAP, chamada ISOPAR, que melhora significativamente a otimização.

Otimização

O IBM 650 usa um tambor magnético como armazenamento principal. O tambor armazena até 4.000 palavras e gira a 12.500 revoluções por minuto (RPM), 4,8 ms por rotação ou tempo médio de acesso de 2,4 ms. "Se você colocasse suas instruções sequencialmente no tambor, teria que esperar por uma rotação completa do tambor antes que a CPU pudesse obter a próxima instrução. Como muitas instruções no 650 podiam ser executadas em cerca de 3 milissegundos, você tentaria otimizar seu código, colocando as instruções no tambor de forma que ele não precise de uma revolução completa para acessar sua próxima instrução. " Cada instrução contém o endereço da próxima instrução a ser executada; em vez de um array sequencial de instruções, a memória parece ser uma lista encadeada. O SOAP otimiza colocando instruções a serem executadas sequencialmente em locais ao redor do tambor de modo que a próxima instrução esteja disponível o mais rápido possível após o término da instrução atual. Dizia-se que essa otimização fazia os programas montados "rodarem até seis ou sete vezes mais rápido".

Recursos SOAP

Pseudo-operações

SOAP II suporta as seguintes pseudo-operações (diretivas de montagem):

SOAP II Pseudo-operações
OP Nome Descrição
HED Título Programas separados, possivelmente escritos separadamente, que estão sendo montados juntos. Ele pode especificar um caractere a ser anexado aos nomes dos símbolos nesta seção para evitar conflitos de nomenclatura.
REL Programa de Biblioteca Relocável Define o início de um programa de biblioteca relocável sendo montado antes do programa principal. Ele especifica os valores pelos quais os endereços reunidos devem ser realocados.
RBR Reserva de Bloco Relocável Reserva uma variedade de localizações de tambores como "blocos apagáveis ​​dentro da rotina", para evitar o uso de vários cartões para especificar uma área de dados.
REQ Equivalência Relocável Equivale a um símbolo ao endereço de uma sub-rotina relocável e, opcionalmente, especifica uma quantidade de realocação.
BLR Reserva de Bloco Marca um intervalo de endereços de tambor como indisponíveis para atribuição por SOAP.
BLA Disponibilidade de blocos Marca um intervalo de endereços de tambor como disponíveis para atribuição.
REG Especificação Regional Define um intervalo de endereços de bateria como uma "região", identificada por um id de região de um caractere . Os locais na região são especificados como <region id> nnnn, em que nnnn é um número de 1 ao número de locais especificados para a região.
ALF Dados Alfabéticos Especifica até cinco caracteres alfabéticos a serem montados no local especificado.
PAT Mesa de montagem de punção Diz ao SOAP para perfurar um baralho de cinquenta cartas do Tipo Y , listando as localizações de tambores usadas e disponíveis em qualquer ponto durante a montagem. Essa tabela pode ser examinada manualmente e realimentada no SOAP em uma montagem subsequente para restaurar "o status de disponibilidade que existia em algum ponto de uma montagem anterior".
BOP Início do programa Indica o início de um novo programa a ser montado separadamente dos programas anteriores no mesmo baralho.
EQU Equivalência Equivale um símbolo a um valor absoluto, regional ou simbólico.
SYN Sinônimo É igual a um símbolo para um endereço de bateria absoluto. O endereço está marcado como indisponível para atribuição

Comentários

Cada cartão de origem pode conter até dez caracteres de comentários nas colunas 63–72. Para comentários mais longos, até trinta caracteres podem ser inseridos em um Cartão de Comentários ( Tipo 1 , '1' na coluna 41) nas colunas 43-72

Referências

links externos