Assembler
Assembly language is de low level programmeertaal van computers. Er is een hele sterke
relatie tussen de assembly language en de instructies voor de processor. De assembly
language is heel cryptisch, omdat het de instructies van de processor heel nauwkeurig moet
volgen.
Assembly language bevat eenvoudige instructies. Het realiseren van complexe taken vergt
heel veel kennis. Kennis van de processor om deze complexe taken vereenvoudigd op te
schrijven.
Voor ons mensen, is assembly language een erg cryptische en beperkt aanvoelende taal.
Het programmeren is daardoor ook erg foutgevoelig. Door de cryptische omschrijvingen,
beperkte overzicht en de vele getallen die je moet invoeren zorgen ervoor dat het overzicht
snel kwijt is. Dat maakt het vinden van bugs, en die zijn er, erg lastig.
Met behulp van een assembler kan de assembly language worden omgezet naar machine
code. Doordat de assembly language heel dicht bij de taal van de processor ligt, kunnen
hele specifieke operaties worden uitgevoerd. Er kan gebruik worden gemaakt van efficiënte
opeenvolging van instructies, waardoor de uit te voeren taak supersnel door de processor
kan worden uitgevoerd.
Alle instructies krijgen van de assembler een zo genaamd effectief adres. De assembler
produceert 2 files:
● *.list file, waar veel informatie over de assembly language wordt opgeslagen, de
symbol table, geheugenadressen, etc.
● *.obj file, waar de uiteindelijke machinecode instaat. Deze file wordt later
samengesteld met eventuele andere objecten om de executable te vormen.
Toepassing
De assembly language was heel lang de taal om computers mee te programmeren. Van
1980 – 1990 op computers als de MSX, Commodore 64, Commodore Amiga, Atari ST, etc.
De BASIC taal op deze computers was domweg niet snel genoeg. Daarnaast kon er via de
BASIC taal geen optimaal gebruik worden gemaakt van de hardware.
Assembly language wordt nog steeds gebruikt voor specifieke toepassingen. Denk aan
toepassingen waarbij het gebruik van specifieke processor instructies moeten worden
gebruikt. Laag niveau device drivers, welke direct de hardware moeten aanspreken. Bij
embeded processoren, zoals "Digital Signal Processors" (DSP).
Compilers
Wanneer we een programma door een processor willen laten verwerken, dan moeten we de
taal van de processor spreken. We hebben al gezien dat we dan een instruction stream
moeten hebben om de processor ons programma uit te laten voeren.
, Om van assembly language naar machine code te komen hadden we een assembler nodig.
Deze trad op als tolk. Wanneer we in een hogere programmeertaal programmeren hebben
we een compiler nodig. De compiler is nodig om onze programmeertaal te vertalen naar
machine code.
De zogenaamde executable, dit kan ook een "Dynamic Link Library" (DLL) zijn, is voor het
uitvoeren van de machinecode niet meer afhankelijk van de compiler. We kunnen de
machinecode zo vaak starten als dat we willen, zonder dat we de compiler nodig hebben.
Wanneer het programma een ander gedrag moet krijgen of wanneer we überhaupt iets
willen wijzigen dan moeten we de source code aanpassen en het programma opnieuw
compileren. De nieuwe executable heeft dan, als alles goed is aangepast, de gewenste
aanpassing.
Geschiedenis
In het begin waren er vooral menselijke compilers. Compilers zetten source tekst om in data
die de computer kan verwerken. Vroeger waren de mensen degene die source tekst, de
formules van de engineers, etc., omzetten naar code die de computers begrepen.
Grace Hopper heeft het proces van het omzetten van source naar machinecode compileren
genoemd. Zij had als taak het programmeren van de computer. In die tijd werden computers
vrijwel alleen gebruikt voor rekenwerkzaamheden. Van engineers kreeg ze berekeningen die
moesten worden uitgevoerd. Deze programmeerde ze vervolgens in de computer. Dit werd
gedaan met een taal die zeer dicht bij de formules stond. Het zogenaamde A-0 System.
Tijdens dit werk kreeg ze langzaam het idee dat het mogelijk moest zijn om een taal die leek
op Engels om te kunnen zetten naar instructies voor de computer. Iedereen verklaarde haar
voor gek. Een computer kan toch geen tekst lezen, die is bedoeld om te rekenen.
Later heeft ze dit toch gerealiseerd. Hieruit is de programmeertaal COBOL ontstaan. Tot op
de dag van vandaag nog steeds gebruikt. Voornamelijk terug te vinden bij overheden en
financiële instanties. Echter er zijn steeds minder mensen die COBOL kunnen. Dit wordt
langzaam een probleem.