Een one-pass assembler is een assembler die de broncode slechts één keer doorleest en gaandeweg machinecode genereert. Een two-pass-assembler leest daarentegen de broncode twee keer door. De eerste stap is het genereren van een symbooltabel, die labels en variabelen toewijst aan hun geheugenadressen. De tweede stap is het gebruik van de symbolentabel om de machinecode te genereren.
Het belangrijkste voordeel van een one-pass-assembler is dat deze sneller is dan een two-pass-assembler. Dit komt omdat het de broncode niet twee keer hoeft door te lezen. Het grootste nadeel van een one-pass assembler is dat deze geen voorwaartse referenties kan oplossen. Dit betekent dat als een label of variabele wordt gebruikt voordat deze is gedefinieerd, de assembler niet in staat zal zijn de juiste machinecode te genereren.
Assemblers met twee doorgangen kunnen voorwaartse referenties oplossen, maar ze zijn langzamer dan assemblers met één doorgang. Dit komt omdat ze de broncode twee keer moeten doorlezen. Het belangrijkste voordeel van een twee-pass-assembler ten opzichte van een one-pass-assembler is dat deze efficiëntere machinecode kan produceren. Dit komt omdat het tijdens de tweede doorgang toegang heeft tot de symbolentabel, waardoor het de machinecode kan optimaliseren. |