Assembler versus tolk
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 is de brontaal een taal op hoog niveau, zoals C ++, en is de doeltaal een taal op een 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. Aan de andere kant zijn tolken tools die instructies uitvoeren die in een programmeertaal zijn geschreven. De tolk kan ofwel direct broncode op hoog niveau uitvoeren of deze vertalen naar tussencode en deze vervolgens interpreteren of vooraf gecompileerde code uitvoeren.
Wat is een assembler?
Assembler is 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 een tolk?
Een tolk is een computerprogramma of een tool die programmeerinstructies uitvoert. Een tolk kan de broncode direct uitvoeren of de broncode naar een tussencode converteren en deze direct uitvoeren, of voorgecompileerde code uitvoeren die door een compiler is geproduceerd (sommige interpretersystemen bevatten een compiler voor deze taak). Talen als Perl, Python, MATLAB en Ruby zijn voorbeelden van programmeertalen die een tussencode gebruiken. UCSD Pascal interpreteert een voorgecompileerde code. Talen zoals Java, BASIC en Samlltalk compileren eerst de broncode naar een tussencode genaamd bytecode en interpreteren deze vervolgens.
Wat is het verschil tussen een Assembler en een Interpreter?
Een assembler kan worden beschouwd als een speciaal type compiler, dat alleen de assembleertaal naar machinecode vertaalt. Tolken zijn hulpmiddelen die instructies uitvoeren die in een bepaalde taal zijn geschreven. Interpretersystemen kunnen een compiler bevatten om code voor te compileren voor interpretatie, maar een interpreter kan geen speciaal type compiler worden genoemd. Assemblers produceren een objectcode, die mogelijk moet worden gekoppeld met behulp van linkerprogramma's om op een machine te kunnen draaien, maar de meeste tolken kunnen de uitvoering van een programma zelf voltooien. Een monteur zal doorgaans een een-op-een vertaling doen, maar dit is niet waar voor de meeste tolken. 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 prestaties erg belangrijk zijn (voor bijvoorbeeld grafische engines,embedded systemen met beperkte hardwarebronnen in vergelijking met een personal computer zoals magnetrons, wasmachines, enz.). Aan de andere kant worden tolken gebruikt wanneer u een hoge draagbaarheid nodig heeft. Dezelfde Java-bytecode kan bijvoorbeeld op verschillende platforms worden uitgevoerd met behulp van de juiste interpreter (JVM).