
Assembler taal
Een assembler taal is een programmeertaal op laag niveau (2e generatie) die is ontworpen voor een specifiek type processor. We kunnen het produceren door broncode van een programmeertaal op hoger niveau (zoals C / C ++) te compileren. Maar we kunnen ook zelf programma’s in deze taal schrijven. Assembler code kunnen we op zijn beurt weer omzetten in machinecode met behulp van een assembler.
Een assembler is een programma dat de computer draait en instructies omzet in een patroon van bits. De processor kan deze gebruiken om basisbewerkingen uit te voeren. Sommige mensen noemen deze instructies assembler-taal en anderen gebruiken de term assembleertaal .
Elke computer heeft een processor die de rekenkundige, logische en controleactiviteiten van de computer uitvoert.
Elke familie van processors heeft zijn eigen set instructies voor het verwerken van verschillende bewerkingen, zoals invoer van het toetsenbord, informatie op het scherm weergeven en verschillende andere taken uitvoeren. Deze reeks instructies noemer we ‘machinetaal instructies’.
Een processor begrijpt alleen machinetaal instructies, die reeksen van enen en nullen zijn. Machinetaal is echter te obscuur en complex om in te zetten voor het ontwikkelen van software. Dus de assembler taal is ontworpen voor een specifieke familie van processors die verschillende instructies in symbolische code en een meer begrijpelijke vorm vertegenwoordigen.
De assemblertaal is de symbolische programmeertaal die qua vorm en inhoud het dichtst bij de machinetaal ligt. De assembler-taal is handig wanneer:
De assembler-taal bestaat uit statements die instructies of comments vertegenwoordigen. De instructie statements zijn het werkende deel van de taal en zijn onderverdeeld in de volgende drie groepen:
Aangezien de meeste compilers broncode direct naar machinecode converteren, maken softwareontwikkelaars vaak programma’s zonder de assembler taal te gebruiken. In sommige gevallen kunnen we assemblercode echter gebruiken om een programma nauwkeurig af te stemmen. Een programmeur kan bijvoorbeeld een specifiek proces in assembler taal schrijven om ervoor te zorgen dat het zo efficiënt mogelijk werkt.
Hoewel assembler talen verschillen verschillen per processor architectuur, hebben ze vaak overeenkomstige instructies en operators. Hieronder staan enkele voorbeelden van instructies die x86- processoren ondersteunen.
De volgende eenvoudige assemblercode kunnen we gebruiken om de cijfers 3 en 4 op te tellen:
mov eax, 3 – laadt 3 in het register “eax”.
mov ebx, 4 – laadt 4 in het register “ebx”.
add eax, ebx, ecx – tel “eax” en “ebx” bij elkaar op en sla het resultaat (7) op in ” ecx”.
Het schrijven van een programma in assembler is echter een moeizaam proces. Dat komt omdat iedere bewerking op een zeer eenvoudig niveau moet worden uitgevoerd. Hoewel het waarschijnlijk niet nodig is om assemblercode ooit toe te passen om een computerprogramma te maken, maakt het leren van assembler taal wel vaak deel uit van een informatica curriculum omdat het nuttig inzicht biedt in de manier waarop processors werken.
Kennis van deze basale taal maakt je bewust van hoe:
Voordelen van het gebruik van assembler taal zijn:
Of we assembler taal moeten leren, hangt af van ons werk. Voor de meeste ontwikkelaars is het antwoord ‘nee’.
Er zijn namelijk twee primaire redenen om assembler taal te leren: omdat we het zelf moeten gebruiken of omdat we computers op een fundamenteel niveau willen begrijpen.
Vanuit praktisch oogpunt gebruikt slechts een handjevol ingenieurs en computerwetenschappers assembler.
De overgrote meerderheid van softwareontwikkelaars, waaronder vrijwel alle applicatie-ontwikkelaars, maakt gebruik van programmeertalen van hoog niveau en geen assemblercode. Enkele specifieke gebieden waar we echter wel assembler taal voor gebruiken zijn:
De andere reden om assembler te leren, is om een beter begrip te krijgen van wat er diep in het inwendige van een computer gebeurt. (Dit is de reden waarom vrijwel alle IT-ers deze taal krijgen tijdens hun opleiding.)
Als je iemand bent die graag in computers duikt en echt in techniek geïnteresseerd is, overweeg je misschien een carrière in het ontwikkelen van systemen op laag niveau.
Een codegenerator vertaalt de uitvoer van de syntaxanalysator en/of semantische analysator naar code op een lager niveau, zoals bijvoorbeeld assembler taal.
Het eerste deel van een compiler analyseert de broncode tot een structuur die de betekenis van het programma draagt. Deze structuur is over het algemeen de abstracte syntaxisboom die is gecontroleerd en gedecodeerd. Vergeet bovendien niet dat gedecodeerd betekent dat alle identificatiereferenties zijn toegekend.
Vanuit deze structuur kunnen we tevens de bijbehorende code genereren in een andere taal, de doeltaal. Dit is wat een codegenerator doet.
Sommige compilers genereren twee keer: ze genereren eerst code in een “tussentaal” zoals SIL, LLVM IR, HIR, MIR, CIL, enzovoorts. Daarna voeren ze de “echte” codegeneratie in een doeltaal uit die we direct kunnen uitvoeren zoals virtuele machinecode, assembler taal of machinetaal.
Dit zijn de drie doelen van een goede codegenerator:
Een nieuwer idee op het gebied van programmavoorbereiding en portability is het concept van een virtuele machine . Met behulp van de Java- programmeertaal worden taalinstructies bijvoorbeeld gecompileerd tot een generieke vorm van machinetaal die bekend staat als bytecode en die kan worden uitgevoerd door een virtuele machine, een soort theoretische machine die de meeste computerbewerkingen benadert. De bytecode kan vervolgens worden verzonden naar elk computerplatform dat eerder is gedownload of ingebouwd in de virtuele Java-machine. De virtuele machine is op de hoogte van de specifieke instructielengtes en andere bijzonderheden van het platform en zorgt ervoor dat de Java-bytecode kan draaien.
Er zijn enkele talen waar we, als we er maar iets van weten, al heel veel kunnen doen. Python en Ruby zijn zo, we kunnen er in een weekend al genoeg over leren om iets waardevols te bouwen. Assembler taal is niet zo.
Assembler taal gebruiken we nooit op zichzelf, maar altijd op een specifiek platform. Het type ingenieur dat assembler moet kennen, werkt waarschijnlijk in een gebied waar het nodig is om ook andere vaardigheden te kennen om effectief te zijn. Deze omvatten waarschijnlijk:


Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.