Assembler: Forskelle mellem versioner

Content deleted Content added
Rune (diskussion | bidrag)
m →‎Virkemåde: Præcisering
Rune (diskussion | bidrag)
m →‎Virkemåde: Lidt om optimering
Linje 8:
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 regisreres 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.
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.
 
==Kilder==