Assembler

Fra Wikipedia, den frie encyklopædi
Spring til navigation Spring til søgning
Eksempel på assemblersprog

En assembler er et program, som oversætter assemblersprog til maskinkode. Programmer i assemblersprog er typisk lavet automatisk af en oversætter, men det er muligt, at skrive programmer direkte i assemblersprog.

En assembler laver maskinkode til en bestemt computertype. Maskinkoden er ikke et færdigt program. Output fra assembleren skal behandles af en linker før der kommer et program ud af det.

Virkemåde[redigér | redigér wikikode]

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[redigér | redigér wikikode]

ItStub
Denne it-artikel er kun påbegyndt. Hvis du ved mere om emnet, kan du hjælpe Wikipedia ved at udvide den.