Definitie van assembler

Wat is een assembleertaal?

Een assembleertaal is een soort programmeertaal op laag niveau die bedoeld is om rechtstreeks met de hardware van een computer te communiceren.In tegenstelling tot machinetaal, die uit binaire en hexadecimale tekens bestaat, zijn assembleertalen ontworpen om door mensen leesbaar te zijn.

Programmeertalen op een laag niveau, zoals assembler, vormen een noodzakelijke brug tussen de onderliggende hardware van een computer en de programmeertalen van een hoger niveau, zoals Python of JavaScript, waarin moderne softwareprogramma's worden geschreven.

Belangrijkste leerpunten

  • Een assembleertaal is een soort programmeertaal die talen op hoog niveau omzet in machinetaal.
  • Het is een noodzakelijke brug tussen softwareprogramma's en hun onderliggende hardwareplatforms.
  • Assemblagetaal is afhankelijk van taalsyntaxis, labels, operators en richtlijnen om code om te zetten in bruikbare machine-instructies.
  • Assemblertaal kan door single-pass of multi-pass assemblers gaan, elk met specifieke toepassingen en voordelen.
  • Tegenwoordig worden assembleertalen zelden rechtstreeks geschreven, hoewel ze nog steeds worden gebruikt in sommige nichetoepassingen, zoals wanneer de prestatie-eisen bijzonder hoog zijn.

Hoe assembleertalen werken

In wezen zijn de meest elementaire instructies die door een computer worden uitgevoerd binaire codes, bestaande uit enen en nullen.Die codes worden direct vertaald in de "aan" en "uit" toestanden van de elektriciteit die door de fysieke circuits van de computer beweegt.In wezen vormen deze eenvoudige codes de basis van 'machinetaal', de meest fundamentele variëteit van programmeertaal.

Natuurlijk zou geen mens in staat zijn om moderne softwareprogramma's te bouwen door expliciet enen en nullen te programmeren.In plaats daarvan moeten menselijke programmeurs vertrouwen op verschillende abstractielagen die zichzelf kunnen toestaan ​​om hun commando's uit te drukken in een formaat dat intuïtiever is voor mensen.

In het bijzonder geven moderne programmeurs opdrachten in zogenaamde "talen op hoog niveau", die intuïtieve syntaxis gebruiken, zoals hele Engelse woorden en zinnen, evenals logische operatoren zoals "en", "of" en "else" die zijn vertrouwd voor het dagelijks gebruik.

Uiteindelijk moeten deze commando's op hoog niveau echter worden vertaald in machinetaal.In plaats van dit handmatig te doen, vertrouwen programmeurs op assemblertalen die tot doel hebben automatisch te vertalen tussen deze talen op hoog en laag niveau.De eerste assembleertalen werden ontwikkeld in de jaren 1940, en hoewel moderne programmeurs en moderne natuurlijke taalprocessors heel weinig tijd besteden aan het omgaan met assembleertalen, blijven ze niettemin essentieel voor het algemene functioneren van een computer.

Tijdens de begindagen van de informatica zouden systeemprogrammering en applicatieprogrammering beide volledig in assembler plaatsvinden.Zonder assembleertalen zouden veel moderne computers en hogere talen die we tegenwoordig gebruiken niet mogelijk zijn geweest.

Onderdelen van assembler

Syntaxis

Bij het schrijven van code in welke programmeertaal dan ook, is er een waarneembare, specifieke volgorde van regels die moet worden gevolgd om een ​​compiler in staat te stellen de code foutloos uit te voeren.Deze regels worden gedefinieerd als de syntaxis en bevatten criteria zoals het maximum aantal toegestane tekens, met welke tekens coderegels moeten beginnen of wat bepaalde symbolen "d.w.z. een puntkomma" betekenen.

Label

Een label is een symbool dat het adres vertegenwoordigt waar een instructie of gegevens zijn opgeslagen.Het doel is om te fungeren als de bestemming wanneer ernaar wordt verwezen in een verklaring.Labels kunnen overal worden gebruikt waar een adres in assembleertalen kan worden gebruikt.Een symbolisch label bestaat uit een identificatie gevolgd door een dubbele punt, terwijl numerieke labels bestaan ​​uit een enkele digitale gevolgd door een dubbele punt.

Operators

Operatoren, ook wel commando's genoemd, zijn logische expressies die achter het labelveld staan.Bovendien moet het worden voorafgegaan door ten minste één witruimteteken.Operators kunnen opcode of directief zijn.Opcode komt rechtstreeks overeen met machine-instructies en de bewerkingscode bevat elke registernaam die aan de instructie is gekoppeld.Als alternatief zijn instructieve bewerkingscodes instructies die bekend zijn bij de assembler.

Richtlijn

Richtlijnen zijn instructies aan de monteur die vertellen welke handelingen er tijdens het montageproces moeten plaatsvinden.Richtlijnen hebben het belang van het declareren of reserveren van geheugen voor variabelen; deze variabelen kunnen later in processen worden opgeroepen om meer dynamische functies uit te voeren.Richtlijnen worden ook gebruikt om programma's op te splitsen in verschillende secties.

Macro

Een assembler-macro is een sjabloonschoenformaat dat een reeks of patroon van uitspraken presenteert.Deze reeks instructies in de assembleertaal kan voor meerdere verschillende programma's gelden.Een macro-faciliteit wordt gebruikt om macrodefinities te interpreteren, terwijl een macro-aanroep in de broncode wordt ingevoegd waar "normale" assemblagecode zou zijn gegaan in plaats van de macro-set met instructies.

ezelsbruggetje

Een geheugensteuntje is een afkorting voor een operatie.Een geheugensteuntje wordt ingevoerd in de bewerkingscode voor elke assembleerprogramma-instructie om een ​​verkorte "opcode" te specificeren die een grotere, complete set codes vertegenwoordigt.Bijvoorbeeld, het geheugensteuntje "vermenigvuldigen met twee" heeft een volledige set code die het geheugensteuntje uitvoert.

Hoogfrequent handelen

Tegenwoordig blijven assembleertalen het onderwerp van studie door studenten informatica, om hen te helpen begrijpen hoe moderne software zich verhoudt tot de onderliggende hardwareplatforms.In sommige gevallen moeten programmeurs in assembler-talen blijven schrijven, bijvoorbeeld wanneer de prestatie-eisen bijzonder hoog zijn, of wanneer de hardware in kwestie niet compatibel is met de huidige talen op hoog niveau.

Een voorbeeld dat relevant is voor financiën, zijn de hoogfrequente handelsplatforms (HFT) die door sommige financiële bedrijven worden gebruikt.Op deze markt is de snelheid en nauwkeurigheid van transacties van het grootste belang om de HFT-handelsstrategieën winstgevend te laten zijn.Daarom hebben sommige HFT-bedrijven, om een ​​voorsprong op hun concurrenten te krijgen, hun handelssoftware rechtstreeks in assembleertalen geschreven, waardoor het niet nodig is om te wachten tot de opdrachten van een hogere taal zijn vertaald in machinetaal.

Velen geloven dat assembleertalen de steilste leercurves hebben en de moeilijkste computertalen zijn om te leren.

Voor-en nadelen

Assemblertaal kan meestal sneller worden uitgevoerd dan talen op hoog niveau.Het is relatief eenvoudig om componenten van assembleertaalcode in te voegen of te verwijderen, en assembleertaal vereist meestal minder instructies om een ​​taak te voltooien in vergelijking met andere soorten talen.

Assemblagetalen worden ook vaak gebruikt door programmeurs die meer controle over hun computers willen, aangezien u met assembleertalen uw hardware direct kunt manipuleren.Vanwege de snelheid en het belang ervan, zijn sommige programma's specifiek geschreven met behulp van assembleertaal, omdat de code meestal kleiner kan blijven.

Assemblertalen hebben vaak een aantal nadelen.Lange programma's die in assembler zijn geschreven, vereisen meestal zwaardere rekenkracht en kunnen niet op kleine computers worden uitgevoerd.Sommigen vinden de syntaxis van assembler moeilijker te onthouden, en het kan wat langer duren om te coderen met behulp van assembler omdat het complexer is.Bovendien is assembleertaal meestal niet overdraagbaar tussen verschillende merken van verschillende computers; Net zoals werknemersvoordelen verloren gaan bij het wisselen van bedrijf, kunnen talen niet naadloos worden vertaald naar verschillende computers.

Pluspunten
  • Uitvoering kan eenvoudiger zijn in vergelijking met andere talen

  • Uitvoering is meestal sneller in vergelijking met andere talen

  • Maakt directe controle over hardware mogelijk

  • Code kan kleiner blijven in vergelijking met andere talen

nadelen
  • Programmeren kan een grotere uitdaging zijn om op te pikken in vergelijking met talen op hoog niveau

  • Syntaxis van assembleertalen is moeilijk

  • Niet draagbaar tussen machines

Soorten monteurs

Assembler moet met behulp van een assembler in machinetaal worden vertaald.Er zijn twee primaire soorten assemblers.

Een single-pass assembler scant een programma één keer en maakt een gelijkwaardig binair programma.Dit type assembler valideert assembleertaalcode door de code op te zoeken in een geheugensteuncodetabel.Een single-pass assembler is vaak sneller dan een multi-pass assembler, en het is meestal niet nodig om een ​​tussenliggende code te construeren.

Een multi-pass assembler betekent dat de assembler meer dan één pass gebruikt.Multi-pass assemblers maken een tabel met elk symbool en elk van hun waarden in de eerste pass, en gebruiken de tabel vervolgens in toekomstige passen om nieuwe code te genereren.Elke afzonderlijke pas behandelt meestal een andere specifieke taak.Hoewel ze meestal langzamer zijn, kunnen multi-pass assemblers met modulaire structuren vaak worden hergebruikt voor verschillende machines.

Voorbeeld van assembleertaalcode

Hieronder ziet u een voorbeeld van Netwide Assembler (NASM) assembleertaalcode.

Voorbeeld van assembleertaalcode.

Loyola Marymount University

In dit voorbeeld activeert de SYSCALL-instructie aan het einde van de code het gedeelte van het geheugen waar de besturingssysteemservices zijn opgeslagen.Vervolgens wordt de code RAX gebruikt om code te schrijven en vervolgens RDI om af te sluiten.De SYSCALL-functie wordt twee keer gebruikt om het besturingssysteem op te roepen en om aan het systeem aan te geven wanneer de code is voltooid en het tijd is om af te sluiten.

Wat is een voorbeeld van een assembleertaal?

De meest gebruikte assembleertalen zijn ARM, MIPS en x86.

Is C++ een assembleertaal?

C++ bestaat niet uit assemblagecode.De computertaal C++ bestaat uit C++-code die een compiler vertaalt in een uitvoerbare machinecode.

Is Python een assembleertaal?

Python is geavanceerder dan assembleertalen.Assemblertalen worden beschouwd als een taal op laag niveau, terwijl talen op hoog niveau zoals C, Java of Python nullen en enen gebruiken in plaats van cijfers, symbolen en afkortingen.

Hoe worden assembleertalen tegenwoordig gebruikt?

Hoewel talen op een lager niveau worden beschouwd in vergelijking met meer geavanceerde talen, worden assembleertalen nog steeds gebruikt.Assemblertaal wordt gebruikt om hardware rechtstreeks te manipuleren, toegang te krijgen tot gespecialiseerde processorinstructies of kritieke prestatieproblemen te evalueren.Deze talen worden ook gebruikt om hun snelheidsvoordeel ten opzichte van talen op hoog niveau te benutten voor tijdgevoelige activiteiten zoals hoogfrequente handel.

Het komt neer op

Assembleertaal is code op laag niveau die afhankelijk is van een sterke relatie tussen de instructies die worden ingevoerd met behulp van de codeertaal en hoe een machine de code-instructies interpreteert.Code wordt omgezet in uitvoerbare acties met behulp van een assembler die invoer omzet in herkenbare instructies voor de machine.Hoewel veel grotere systemen in de begintijd van computergebruik veel voorkwamen, gebruiken ze talen van een hoger niveau.