
Le programme d'assemblage optimal symbolique (SOAP) est un assembleur pour la machine de traitement de données à tambour magnétique IBM 650 , un des premiers ordinateurs utilisés pour la première fois en 1954. Il a été développé par Stan Poley au centre de recherche IBM Thomas J. Watson . SOAP est appelé « Optimal » (ou « Optimum ») car il tente de stocker les instructions générées sur le tambour de stockage afin de minimiser le temps d'accès d'une instruction à l'autre. SOAP est un assembleur multipasse , c'est-à-dire qu'il traite le programme source plusieurs fois afin de générer le programme objet .
La première version de SOAP a été remplacée par SOAP II en 1957, qui prenait en charge des fonctionnalités matérielles supplémentaires telles que les registres d'index et la mémoire à noyau magnétique , puis SOAP IIA en 1958, SOAP 2L, SOAP 2L Tape, SOAP 4000 et SOAP 42 en 1961. SOAP a été utilisé comme backend du compilateur FOR TRANSIT en 1957.
Donald Knuth a produit indépendamment des versions nommées SOAP III en 1958 et SUPERSOAP en 1959 au Case Institute of Technology, qui fait maintenant partie de la Case Western Reserve University à Cleveland, Ohio . Le National Bureau of Standards des États-Unis , sous la direction d'Herbert Howe, a également écrit une version de SOAP, appelée ISOPAR, censée améliorer considérablement l'optimisation.
Optimisation
L'IBM 650 utilise un tambour magnétique comme mémoire principale. Le tambour peut contenir jusqu'à 4 000 mots et tourne à 12 500 tours par minute (RPM), soit 4,8 ms par rotation, soit un temps d'accès moyen de 2,4 ms. « Si vous placez vos instructions séquentiellement sur le tambour, vous devrez attendre une rotation complète du tambour avant que le processeur puisse obtenir l'instruction suivante. Étant donné que de nombreuses instructions sur le 650 peuvent s'exécuter en environ 3 millisecondes, vous essayez d'optimiser votre code en plaçant les instructions sur le tambour de telle manière qu'il ne faille pas au tambour une révolution complète pour accéder à votre instruction suivante. » Chaque instruction contient l'adresse de l'instruction suivante à exécuter ; au lieu d'un tableau séquentiel d'instructions, la mémoire semble être une liste chaînée. SOAP optimise en plaçant les instructions à exécuter séquentiellement dans des emplacements autour du tambour de telle sorte que l'instruction suivante soit disponible dès que possible après la fin de l'instruction en cours. Cette optimisation était censée permettre aux programmes assemblés de « s'exécuter jusqu'à six ou sept fois plus vite ».
Fonctionnalités SOAP
Pseudo-opérations
SOAP II prend en charge les pseudo-opérations suivantes (directives d'assemblage) :
Commentaires
Chaque fiche source peut contenir jusqu'à dix caractères de commentaires dans les colonnes 63 à 72. Pour des commentaires plus longs, jusqu'à trente caractères peuvent être saisis sur une fiche de commentaires ( type 1 , « 1 » dans la colonne 41) dans les colonnes 43 à 72