Symbolický optimální montážní program - Symbolic Optimal Assembly Program

The Symbolický optimální montážní program (SOAP) je assembler pro IBM 650 Stroj na zpracování dat magnetického bubnu, raný počítač poprvé použit v roce 1954. Byl vyvinut Stanem Poleym v IBM Výzkumné centrum Thomase J. Watsona.[1] Volá se SOAP Optimální (nebo Optimální), protože se pokouší uložit vygenerované pokyny na skladovací buben minimalizovat přístupová doba z jedné instrukce na druhou. SOAP je víceprůchodový assembler, to znamená, že zpracovává zdrojový program vícekrát za účelem vygenerování souboru objektový program.
První verze SOAP byla následována SOAP II v roce 1957,[2] který podporoval další hardwarové funkce jako rejstříky rejstříků a paměť magnetického jádra, SOAP IIA v roce 1958,[3] SOAP 2L, SOAP 2L Tape, SOAP 4000 a SOAP 42 v roce 1961.[4] SOAP byl použit jako backend k K TRANZITU překladač v roce 1957.[1]
Donald Knuth nezávisle vyráběné verze s názvem SOAP III v roce 1958[5] a SUPERSOAP v roce 1959[6] na Case Institute of Technology, nyní součástí Case Western Reserve University v Cleveland, Ohio. Spojené státy Národní úřad pro standardy, pod vedením Herberta Howe, také napsal verzi protokolu SOAP nazvanou ISOPAR, která významně zlepšuje optimalizaci.[7]
Optimalizace
IBM 650 používá jako hlavní úložiště magnetický buben. Válec pojme až 4 000 slov a otáčí se rychlostí 12 500 otáček za minutu (RPM), 4,8 ms na otáčku nebo průměrnou dobou přístupu 2,4 ms. „Pokud byste své instrukce umisťovali postupně na buben, museli byste počkat na úplné otočení bubnu, než by CPU mohla získat další instrukci. Protože mnoho instrukcí na 650 by se dalo provést přibližně za 3 milisekundy, pokusili byste se optimalizovat svůj kód umístěním instrukcí na buben takovým způsobem, aby přístup k vaší další instrukci nevyžadoval plnou revoluci. “[8] Každá instrukce obsahuje adresu další instrukce k provedení; místo postupného pole instrukcí se paměť jeví jako propojený seznam. SOAP optimalizuje umístěním instrukcí, které mají být provedeny postupně, na místa kolem bubnu tak, aby byla další instrukce k dispozici co nejdříve po dokončení aktuální instrukce. Tato optimalizace údajně umožnila sestaveným programům „běžet až šestkrát nebo sedmkrát rychleji“.[1]
Funkce SOAP
Pseudo-operace
SOAP II podporuje následující pseudo-operace (direktivy sestavení):[2]
OP | název | Popis |
---|---|---|
HED | Nadpis | Odděluje programy, případně psané samostatně, které se sestavují společně. Může určit znak, který má být připojen k názvům symbolů v této části, aby nedocházelo ke konfliktům názvů. |
REL | Přemístitelný knihovní program | Definuje začátek přemístitelného knihovního programu, který se sestavuje před hlavním programem. Určuje částky, o které by měly být přemístěné adresy přemístěny. |
RBR | Přemístitelná bloková rezervace | Vyhrazuje si řadu umístění bicích jako „mazatelné bloky v rámci rutiny“, aby se vyhnuli použití řady karet k určení datové oblasti. |
REQ | Přemístitelná ekvivalence | Rovná symbol na adresu přemístitelného podprogramu a volitelně určuje částku přemístění. |
BLR | Blokovat rezervaci | Označí rozsah adres bubnu jako nedostupných pro přiřazení pomocí SOAP. |
BLA | Blokovat dostupnost | Označí rozsah adres bubnu jako dostupný pro přiřazení. |
REG | Regionální specifikace | Definuje rozsah adres bubnu jako „oblast“ identifikovanou jedním znakem id regionu. Umístění v oblasti jsou zadána jako |
ALF | Abecední údaje | Určuje až pět abecedních znaků, které mají být sestaveny na zadaném místě. |
PAT | Děrovací montážní stůl | Řekne SOAP, aby udeřil balíček padesáti Typ Y karty se seznamem použitých a dostupných míst bubnu kdykoli během montáže. Tuto tabulku lze zkontrolovat ručně a přenést zpět do protokolu SOAP na následující sestavě, aby se obnovil „stav dostupnosti, který existoval v určitém bodě předchozí sestavy.“ |
BOP | Začátek programu | Označuje začátek nového programu, který se má sestavit odděleně od předchozích programů ve stejném balíčku karet. |
EQU | Rovnocennost | Zarovná symbol na absolutní, regionální nebo symbolickou hodnotu. |
SYN | Synonymum | Zarovná symbol na absolutní adresu bubnu. Adresa je označena jako nedostupná pro přiřazení |
Komentáře
Každá zdrojová karta může obsahovat až deset znaků komentářů ve sloupcích 63–72. U delších komentářů lze na kartu komentářů zadat až třicet znaků (Typ 1, „1“ ve sloupci 41) ve sloupcích 43–72
Reference
- ^ A b C Lorenzo, Mark Jones (2019). Dějiny programovacího jazyka Fortran. p. 162. ISBN 9781082395949. Citováno 28. zář, 2020.
- ^ A b IBM Corporation (1957). SOAP II pro systém zpracování dat IBM 650 (PDF). Citováno 27. zář 2020.
- ^ IBM Corporation (1958). Bulletin systému pro zpracování dat IBM 650. Citováno 27. zář 2020.}
- ^ IBM Corporation (1961). SOAP 2L, SOAP 2L Tape, SOAP 4000 a SOAP 42 (PDF). Citováno 27. zář 2020.
- ^ „SOAP III“. Online historická encyklopedie programovacích jazyků. Citováno 27. zář 2020.
- ^ Knuth, Donald E. (1959). Montážní systém SUPERSOAP pro Augmented 650 (PDF). Citováno 27. zář 2020.
- ^ Howe, Herberte. ISOPAR: nová a vylepšená symbolická optimalizační montážní rutina pro IBM 650 (PDF). Citováno 28. zář, 2020.
- ^ Kugel, Herb (22. října 2001). „IBM 650“. Dr. Dobb. Citováno 28. zář, 2020.
externí odkazy
![]() | Tento programovací jazyk související článek je a pahýl. Wikipedii můžete pomoci pomocí rozšiřovat to. |