Assembler: Forskelle mellem versioner

Content deleted Content added
billede
Jeg har rettet i grammatikken.
Linje 1:
[[File:Motorola 6800 Assembly Language.png|thumb|Eksempel på assemblersprog]]
En '''assembler''' er et [[computerprogram|program]], som oversætter [[assemblersprog]] til [[maskinkode]]. Programmer i assemblersprog er typisk lavet automatisk af en [[oversætter (datalogi)|oversætter]], men det er muligt, at skrive programmer direkte i assemblersprog.
 
En assembler laver maskinkode til en bestemt [[computer]]type. Maskinkoden er ikke et færdigt program. Output fra assembleren skal behandles af en [[linker]] før, at der kommer et program ud af det.
 
== Virkemåde ==
Oversættelse fra assemblersprog til maskinkode foregår som oftest i to trin, der hver kræver en gennemlæsning af kildefilen. Først oversættes programmet linje for linje og bagefter indsættes de rette adresser på variabler og funktioner. De to trin gør det enkelt, at referere til ting, der defineres senere i programmet end der, hvor de bliver brugt.
 
I første trin laves en oversigt over alle definerede labels, og deres placering i programmet. Desuden laves en tabel med navne, der er defineret i programmet. Disse navne er navne på variabler og funktioner. I tabellen registreres navnene for hvert sted, der refereres til dem. Herefter sammenholdes de to tabeller, og navnetabellen opdateres med adresser.
 
I andet trin læses filen på ny og instruktionerne opdateres med konkrete adresser fra navnetabellen. Labeltabellen fortæller, hvor det skal gøres. Til sidst skrives den opdaterede maskinkode ud til en fil.
 
Det er ikke alle assemblersprog, der forudsætter, at der er defineret en label for alle variabler, men den overordnede mekanisme er den samme. Nogle assemblere læser koden igennem flere gange for at kunne optimere koden og ikke blot oversætte den. Optimeringen kan være at indsætte mere kompakte instruktioner,. Hvis der er en instruktion om at hoppe til et andet sted i programmet, og det andet sted er tæt på adressemæssigt, kan der muligvis bruges en kompakt instruktion med et mindre adressefelt.
 
== Kilder ==