Assembler versus compiler
Over het algemeen is een compiler een computerprogramma dat een programma leest dat is geschreven in de ene taal, de brontaal genoemd, en het vertaalt in een andere taal, de doeltaal. Traditioneel was de brontaal een taal op hoog niveau, zoals C ++ en de doeltaal was een taal op laag niveau, zoals de assembleertaal. Er zijn echter compilers die een bronprogramma dat in de assembleertaal is geschreven, kunnen converteren naar machinecode of objectcode. Assemblers zijn zulke gereedschappen. Dus zowel assemblers als compilers produceren uiteindelijk code die direct op een machine kan worden uitgevoerd.
Wat is een compiler?
Compiler is een computerprogramma dat een programma leest dat in de ene taal is geschreven, de brontaal genoemd, en het vertaalt in een andere taal, de doeltaal. Meestal is de brontaal een taal op hoog niveau en is de doeltaal een taal op laag niveau. Over het algemeen kunnen compilers dus worden gezien als vertalers die van de ene taal naar de andere vertalen. Bovendien voeren compilers enkele optimalisaties uit aan de code. Een typische compiler bestaat uit verschillende hoofdcomponenten. Het eerste onderdeel is de scanner (ook wel de lexicale analysator genoemd). De scanner leest het programma en converteert het naar een reeks tokens. De tweede component is de parser. Het converteert de reeks tokens naar een ontleedboom (of een abstracte syntaxisboom), die de syntactische structuur van het programma vastlegt. De volgende component zijn de semantische routines die de semantiek van de syntactische structuur interpreteren. De code-optimalisaties en de uiteindelijke codegeneratie volgen hierop.
Wat is een assembler?
Assembler is een software of een tool die assembleertaal vertaalt naar machinecode. Een assembler is dus een type compiler en de broncode is geschreven in Assembly-taal. Assembly is een door mensen leesbare taal, maar heeft doorgaans een één-op-één relatie met de corresponderende machinecode. Daarom wordt gezegd dat een assembler isomorfe (één-op-één mapping) vertaling uitvoert. Geavanceerde assemblers bieden extra functies die programmaontwikkeling en debuggingprocessen ondersteunen. Het type assemblers dat macro-assemblers wordt genoemd, biedt bijvoorbeeld een macro-faciliteit.
Wat is het verschil tussen een assembler en een compiler?
Compiler is een computerprogramma dat een programma leest dat in de ene taal is geschreven en het in een andere taal vertaalt, terwijl een assembler kan worden beschouwd als een speciaal type compiler dat alleen assembleertaal naar machinecode vertaalt. Compilers produceren de machine-uitvoerbare code meestal rechtstreeks vanuit een taal op hoog niveau, maar assemblers produceren een objectcode die mogelijk moet worden gekoppeld met behulp van linkerprogramma's om op een machine te kunnen draaien. Omdat assembleertaal een één-op-één mapping heeft met machinecode, kan een assembler worden gebruikt voor het produceren van code die zeer efficiënt werkt voor situaties waarin de prestaties erg belangrijk zijn (voor bijvoorbeeld grafische engines, embedded systemen met beperkte hardwarebronnen in vergelijking met een personal computer). zoals magnetrons, wasmachines, enz.).