En Pass 1 eller Preprocessor Assembler er et dataprogram som brukes til å behandle kildekode skrevet i et programmeringsspråk på lavt nivå, for eksempel assembly, før den behandles av en hovedmontør. Den er designet for å utføre visse forbehandlingsoppgaver på monteringskildekoden før selve monteringsprosessen finner sted.
Funksjoner til en Pass 1-montør
1. Makrobehandling: Pass 1 Assembler gir vanligvis makrobehandlingsfunksjoner, slik at programmerere kan definere og bruke makroer i sin assembly-kildekode. Makroer kan utvides med passende parametere for å generere flere linjer med monteringskode, noe som bidrar til å forenkle og redusere repeterende kodingsoppgaver.
2. Betinget montering: Pass 1 Assembler kan støtte betingede monteringserklæringer. Disse setningene lar assembleren selektivt inkludere eller ekskludere deler av assembly-kildekoden basert på definerte betingelser eller preprocessor-direktiver. Dette kan være nyttig for å bygge forskjellige versjoner av et program eller for å lage monteringskode som er kompatibel med forskjellige maskinvarekonfigurasjoner eller operativsystemer.
3. Kodegenerering: I noen tilfeller kan Pass 1 Assembler utføre noen kodegenereringsoppgaver. Dette inkluderer generering av visse kodebiter eller konstanter direkte i assembly-kildekoden.
4. Forbehandlingsdirektiver: Pass 1 Assembler behandler forbehandlingsdirektiver, som gir instruksjoner eller kommandoer som ikke er monteringsinstruksjoner, men som påvirker hvordan assembleren tolker og behandler kildekoden. Disse direktivene kan inkludere INCLUDE for å inkorporere en annen kildefil, EQUATE for å definere konstanter, og COPY for å sette inn en blokk med kode ordrett.
5. Feilkontroll og diagnostikk: Pass 1 Assembler kan utføre feilkontroll og gi diagnostikk for å hjelpe programmereren med å identifisere og fikse feil i assembly-kildekoden.
Pass 2 Assembler
Etter at Pass 1 Assembler har behandlet sammenstillingskilden og eventuelle forhåndsbehandlingsoppgaver er fullført, er koden klar til å bli behandlet av hovedmontøren, også kjent som Pass 2 Assembler.
Pass 2 Assembler fokuserer først og fremst på følgende oppgaver:
1. Symboloppløsning:Pass 2 Assembler løser alle symboler definert i assembly-kildekoden ved å tilordne spesifikke minneadresser til dem.
2. Kode- og datagenerering:Pass 2 Assembler genererer de faktiske maskinkodeinstruksjonene og datastrukturene basert på monteringsinstruksjonene og direktivene i kildekoden.
3. Adresseberegning:Pass 2 Assembler beregner minneadressene for alle symboler og instruksjoner, og sikrer at de er riktig plassert i minnet for målarkitekturen.
4. Feilkontroll:Pass 2 Assembler verifiserer videre sammenstillingskilden for feil, for eksempel uriktige datatyper, ugyldige instruksjoner eller inkonsistente adresser.
5. Final Assembler:Når alle feil er løst og assembly-kildekoden er fullstendig behandlet, genererer Pass 2 Assembler den endelige sammensatte binære koden, som er klar til å bli utført eller viderebehandlet av en linker om nødvendig.
Oppsummert, Pass 1 Assembler, eller Preprocessor Assembler, utfører forbehandlingsoppgaver på sammenstillingskildekoden før hovedmonteringsprosessen, for eksempel makrobehandling, betinget sammenstilling, forbehandlingsdirektiver og feilkontroll. Pass 2 Assembler overtar deretter å håndtere symboloppløsning, kode- og datagenerering, adresseberegning, feilkontroll og sluttmontering, noe som resulterer i generering av den kjørbare binære koden.