Assembler
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, at der kommer et program ud af det.
Virkemåde
redigérOversæ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, at 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- SL69 – Arkitektur og programmering ISBN 87-89182-34-0
Spire Denne artikel om software og programmering er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den. |