Assembler (software): verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Richardw (overleg | bijdragen)
Geen bewerkingssamenvatting
Richardw (overleg | bijdragen)
Red.
Regel 1:
{{zie artikel|Voor het gelijknamige hypothetische begrip uit de nanotechnologie, zie [[Assembler (nanobots)]]}}
Een '''assembler''' is een vertaalprogramma dat een [[computerprogramma|programma]], geschreven in een [[assembleertaal]] (ook wel ''assembly'' genoemd), kan omzetten naar de [[machinetaal|machinecode]] die een [[processor (computer)|processor]] kan uitvoeren. De assembleertaal wordt zelf ook wel (verkeerdelijk) assembler of assembly genoemd. Assembleren betekent vrijwel letterlijk ''samenstellen''. De taak van de assembler is dan ook het samenstellen (vertalen of omzetten) van voor de ''processor uitvoerbare'' [[instructie (computer)|instructies]] ([[opcode]]s met hun eventuele [[operand]]en) aan de hand van door ''mensen leesbare'' instructies ([[mnemonics]], indien van toepassing eveneens met operanden).
 
==Assembleren en disassembleren==
Regel 10:
Enkele assemblers voor de Intel-x86-familie zijn:
 
''MASM'', de Microsoft assembler, probeert assembly meer op een hogere programmeertaal te laten lijken. Dezeen heeft daardoor een soms vreemde [[syntaxis_syntaxis (informatica)|syntaxis]]. Deze assembler was een van de eerste assemblers voor de x86.
 
''TASM'', de Borland Turbo assembler, heeft een duidelijkere syntaxis dan MASM, maar kanbegrijpt ook de MASM-syntaxis begrijpen. Ook deze assembler was er vroeg bij en is daarom ook vaak de keuze van de oude garde.
 
''NASM'', de Netwide assembler, een redelijk nieuwe assembler met een zeer simpele syntaxis waarin alles duidelijk gezegd moet worden en niets wordt aangenomen. Deze [[opensourcesoftware]] is geschikt voor mensen die alles in de hand willen houden. Deze assembler is geschikt voor het schrijven van de [[bootloader]] van een besturingssysteem vanwege de perfecte controle over het uiteindelijke resultaat.
 
''YASM'', deze assembler is een compleet herschreven versie van de NASM assembler en, wordt onder de BSD-licentie uitgebracht. Belangrijkste eigenschappen zijn de ondersteuning van de x86-64-instructieset, en de bijbehorende uitvoer van PE  COFF64 en ELF64 -bestandsformaten (naast (PE)  COFF(32), ELF32 en BIN).
 
''FASM'', de Flat assembler, is ook een opensource-assembler. Ook FASM ondersteunt de x86-64-instructieset.<ref>flatassembler.net</ref>
 
Verder heeft elke [(microprocessor] -)familie zijn assemblers. Dit geldt bijvoorbeeld voor Microchip (PIC), [[Freescale Semiconductor|Freescale]] (voorheen Motorola), Renesas (voorheen onder andere Mitsubishu), Atmel, ARM.
 
De bekende [[GNU Compiler Collection]] (GCC) vertaalt altijd de hogere code (bijvoorbeeld C) eerst naar assembly, niet direct in objectcode. Dit betekent dat voor elke processor waarvoor GCC geïmplementeerd is, er een assembler ter beschikking moet staan.
 
== Uitvoerbare code= =
De meeste assemblers geven als uitvoer een [[objectcode|objectbestand]]. Gebruikelijke extensies daarbij zijn .obj ofen .o . DitEen objectbestand moet omgezet worden in een [[executable|uitvoerbaar bestand]] (bijvoorbeeld een .exe of een ELF -executable onder Unix-varianten) voordat het uitgevoerd kan worden. Dit doet men door [[linken]]. Met het linken kunnen ook twee of meer object-bestanden samengevoegd worden. Doordat [[compiler]]s van hogere programmeertalen in het algemeen ook objectbestanden leveren, kan men zo een gemixtgemengd project maken.
EenHet besturingssysteem (zoals [[Mac OS]], [[Linux]], [[DOS (besturingssysteem)|DOS]] of [[Microsoft Windows|Windows]]) legtschrijft opvoor hoe het objectformaat is en biedt dan ook de linker aan.
 
Programma's voor embedded processoren worden vaak direct in uitvoerbare vorm gegenereerd.
Regel 33:
 
==Externe links==
* {{en}}[http://www.intel.com www.intel.com], site met zeer veel informatie over x86 -assembly.
* {{en}}[http://www.ctyme.com/rbrown.htm Ralf Browns interruptlijst]