HAL/S

HAL/S ( High-order Assembly Language/Shuttle ) är en programmeringsspråkskompilator och korskompilator för flygelektronik i realtid som används av NASA och associerade byråer ( JPL , etc. ). Den har använts i många amerikanska rymdprojekt sedan 1973 och dess mest betydande användning var i rymdfärjans programmet (ungefär 85 % av Shuttle-mjukvaran var kodad i HAL/S). Den designades av Intermetrics 1972 för NASA och levererades 1973. HAL/S är skriven på XPL , en dialekt av PL/I . Även om HAL/S i första hand är designad för programmering av omborddatorer, är den generellt nog för att möta nästan alla behov inom produktion, verifiering och support av flyg- och andra realtidsapplikationer. Enligt dokumentation från 2005 underhölls den av United Space Alliances HAL/S-projekt .

Mål och principer

De tre nyckelprinciperna för att utforma språket var tillförlitlighet, effektivitet och maskinoberoende . Språket är utformat för att tillåta flyg- och rymdrelaterade uppgifter (som vektor- / matrisaritmetik ) att utföras på ett sätt som är lätt att förstå för personer som har kunskap om rymdfärder, men som inte nödvändigtvis har kunskaper i datorprogrammering.

HAL/S utformades för att inte inkludera vissa konstruktioner som ansågs vara orsaken till fel . Till exempel finns det inget stöd för dynamisk minnesallokering. Språket ger särskilt stöd för realtidsexekveringsmiljöer .

Vissa funktioner, som " GOTO " tillhandahålls främst för att underlätta mekaniska översättningar från andra språk. (sida 82)

"HAL" föreslogs som namnet på det nya språket av Ed Copps, en grundare av Intermetrics , för att hedra Hal Laning, en kollega vid MIT . På förordssidan i HAL/S-språkspecifikationen står det:

grundläggande bidrag till konceptet och implementeringen av MAC gjordes av Dr. J. Halcombe Laning från Draper Laboratory .

Ett förslag på en NASA standard markbaserad version av HAL med namnet HAL/G för "ground" föreslogs, men den kommande uppkomsten av det snart namngivna programmeringsspråket Ada bidrog till Intermetrics ointresse för att fortsätta detta arbete. Istället skulle Intermetrics lägga tonvikten på vad som skulle vara den "röda" finalisten som inte skulle väljas ut.

Värdkompilatorsystem har implementerats på en IBM 360/370, Data General Eclipse och Modcomp IV/Classic-datorerna. Måldatorsystem har inkluderat IBM 360/370 , IBM AP-101 (rymdfärja avionikdator), Sperry 1819A/1819B, Data General Nova och Eclipse, CII Mitra 125, Modcomp II och IV, NASA Std. Rymdfarkoster Computer-l och Computer-2, ITEK ATAC 16M ( Galileo Project ), och sedan 1978 RCA CDP1802 COSMAC mikroprocessor (Galileo Project och andra).

Syntax

HAL/S är ett mestadels fritt format : påståenden kan börja var som helst på en rad och kan spridas över nästa rader, och flera påståenden kan passas in på samma rad om det behövs. Emellertid kan icke-mellanslagstecken i den första kolumnen på en programrad ha speciell betydelse. Till exempel anger bokstaven 'C' i den första kolumnen att hela raden är en kommentar och bör ignoreras av kompilatorn.

En särskilt intressant egenskap hos HAL/S är att den stöder, förutom ett vanligt enradstextformat, ett valfritt treradigt inmatningsformat där tre källkodsrader används för varje sats. I detta format är den första och tredje raden användbara för upphöjda (exponenter) och nedsänkta (index). Flerradsformatet utformades för att tillåta skrivning av HAL/S-kod som liknar matematisk notation .

Som ett exempel kan påståendet skrivas i enkelradsformat som:

X = A ** 2 + B$(I) ** 2

Exponentiering betecknas med två asterisker , som i PL/I och Fortran . Nedsänkt betecknas med ett dollartecken , med det nedsänkta uttrycket inom parentes . Samma kodfragment kan skrivas i flerradsformat som:

E22MX = A + BSI

I exemplet indikeras basraden för satsen med ett 'M' i den första kolumnen, exponentraden indikeras med ett 'E' och den nedsänkta raden indikeras med ett 'S'.

Exempel

Följande är ett enkelt HAL/S-program. Varje program börjar med en märkt PROGRAM- sats; etiketten består av en identifierare följt av ett kolon. Alla variabler måste deklareras i DECLARE , som föregår alla körbara satser. Varje program avslutas med ett CLOSE- avgränsande uttalande.

ENKEL: PROGRAM; KOD I DETTA TYP ÄR K HAL/S KÄLLA DEKLARERA PI KONSTANT (3.14159266); DEKLARE R SKALÄR; LÄS(5) R; SKRIV(6) PI R**2; STÄNG ENKELT;

Datatyper

HAL/S har inbyggt stöd för heltal , flyttalsskalärer , vektor , matriser , booleaner och strängar med 8-bitars tecken, begränsat till en maximal längd på 255. Strukturerade typer kan sammansättas med en DECLARE STRUCT- sats .

Se även

  • IBM AP-101 , rymdfärjans avionikdator
  • Fortress , ett programmeringsspråk med avancerat syntaktisk stöd för matematiska uttryck
  • COLASL är ett programmeringsspråk för IBM 7030 Stretch med ett liknande "naturligt" format

externa länkar