Symboliskt optimalt monteringsprogram

SOAP II kodningsformulär, 1957

Symbolic Optimal Assembly Program (SOAP) är en assembler för IBM 650 Magnetic Drum Data-Processing Machine, en tidig dator som användes först 1954. Den utvecklades av Stan Poley vid IBM Thomas J. Watson Research Center . SOAP kallas Optimal (eller Optimum ) eftersom den försöker lagra genererade instruktioner på lagringstrumman för att minimera åtkomsttiden från en instruktion till nästa. SOAP är en multi-pass assembler, det vill säga den bearbetar källprogrammet mer än en gång för att generera objektprogrammet .

Den första versionen av SOAP efterträddes av SOAP II 1957, som stödde ytterligare hårdvarufunktioner som indexregister och magnetiskt kärnminne, SOAP IIA 1958, SOAP 2L, SOAP 2L Tape, SOAP 4000 och SOAP 42 1961. SOAP var användes som backend till FOR TRANSIT -kompilatorn 1957.

Donald Knuth producerade oberoende versioner med namnet SOAP III 1958 och SUPERSOAP 1959 vid Case Institute of Technology, nu en del av Case Western Reserve University i Cleveland, Ohio . US National Bureau of Standards , under ledning av Herbert Howe, skrev också en version av SOAP, kallad ISOPAR, som sägs förbättra optimeringen avsevärt.

Optimering

IBM 650 använder en magnetisk trumma som huvudlagring. Trumman rymmer upp till 4 000 ord och roterar med 12 500 varv per minut (RPM), 4,8 ms per rotation eller en genomsnittlig åtkomsttid på 2,4 ms. "Om du placerade dina instruktioner sekventiellt på trumman, skulle du behöva vänta på en fullständig rotation av trumman innan CPU:n kunde få nästa instruktion. Eftersom många instruktioner på 650:an kunde köras på cirka 3 millisekunder, skulle du försöka optimera din kod genom att placera instruktionerna på trumman på ett sådant sätt att det inte skulle ta trumman ett helt varv för att komma åt din nästa instruktion." Varje instruktion innehåller adressen till nästa instruktion som ska utföras; istället för en sekventiell uppsättning instruktioner verkar minnet vara en länkad lista. SOAP optimerar genom att placera instruktioner som ska utföras sekventiellt på platser runt trumman så att nästa instruktion är tillgänglig så snart som möjligt efter att den aktuella instruktionen är klar. Denna optimering sades få de sammansatta programmen att "köra så mycket som sex eller sju gånger snabbare."

SOAP-funktioner

Pseudooperationer

SOAP II stöder följande pseudooperationer (monteringsdirektiv):

SOAP II Pseudo-operationer
OP namn Beskrivning
HED Rubrik Separerar program, eventuellt skrivna separat, som håller på att sättas ihop. Den kan ange ett tecken som ska läggas till symbolnamn i det här avsnittet för att undvika namnkonflikter.
REL Flyttbart biblioteksprogram Definierar starten på ett flyttbart biblioteksprogram som sätts ihop före huvudprogrammet. Den anger beloppen med vilka sammansatta adresser ska flyttas.
RBR Flyttbar blockreservation Reserverar en rad trumplatser som "raderbara block inom rutinen" för att undvika att använda ett antal kort för att specificera ett dataområde.
REQ Flyttbar ekvivalens Likställer en symbol med adressen till en flyttbar subrutin, och anger valfritt ett flyttbelopp.
BLR Blockera reservation Markerar ett antal trumadresser som otillgängliga för tilldelning av SOAP.
BLA Blockera tillgänglighet Markerar ett antal trumadresser som tillgängliga för tilldelning.
REG Regional specifikation Definierar ett intervall av trumadresser som en "region", identifierad av ett region-id med ett tecken . Platser inom regionen anges som <region id>nnnn där nnnn är ett tal från 1 till antalet platser som anges för regionen.
ALF Alfabetisk data Anger upp till fem alfabetiska tecken som ska sammanställas på den angivna platsen.
KLAPPA Punch Monteringsbord Beordrar SOAP att slå en kortlek med femtio Typ Y -kort som listar använda och tillgängliga trumplatser när som helst under monteringen. Denna tabell kan granskas manuellt och matas tillbaka till SOAP på en efterföljande sammansättning för att återställa "tillgänglighetsstatusen som existerade någon gång under en tidigare sammansättning."
BOP Början av programmet Indikerar starten på ett nytt program som ska monteras separat från tidigare program i samma kortlek.
EQU Likvärdighet Likställer en symbol med ett absolut, regionalt eller symboliskt värde.
SYN Synonym Likställer en symbol med en absolut trumadress. Adressen är markerad som otillgänglig för tilldelning

Kommentarer

Varje källkort kan innehålla upp till tio tecken med kommentarer i kolumnerna 63–72. För längre kommentarer kan upp till trettio tecken skrivas in på ett kommentarskort ( typ 1 , '1' i kolumn 41) i kolumnerna 43–72

externa länkar