Språk på lavt nivå

Et programmeringsspråk på lavt nivå eller førstegenerasjons funksjoner er et der instruksjonene utøver direkte kontroll over maskinvaren og er begrenset av den fysiske strukturen til datamaskinene som støtter det. Bruken av ordet lav i navnet innebærer ikke at språket er mindre kraftig enn et språk på høyt nivå , men refererer snarere til den reduserte abstraksjonen mellom språket og maskinvaren.

Kompleksitet vs. vanskelighetsgrad

Språk på lavt nivå som assembly-språk kan være vanskeligere å programmere enn språk på høyt nivå fordi de er nærmere relatert til maskinvarens tekniske egenskaper. I tillegg mangler disse vanligvis abstraksjoner på høyere nivå. En abstraksjon utenfor det som er fastsatt for settet med mikrokoder til en datamaskins mikroprosessor er ikke mulig. På den annen side er det lettere å oversette til maskinspråk , en oppgave som i hovedsak utføres av en kompilator .

Fra det laveste til det høyeste abstraksjonsnivået med hensyn til maskinvare, er det mulig å klassifisere programmeringsspråk som følger:

  1. Maskinspråk : Det består av enerne (1) og nullene (0) som vil bli utført direkte av den sentrale prosessorenheten (CPU). Når du ser på dette språket i et vanlig tekstredigeringsprogram, vil det virke meningsløst (søppeltegn). Mange av dem vil være tegn som ikke kan skrives ut. Disse nullene og enerne representerer bokstavelig talt instruksjoner og data som skal behandles.
  2. Forsamlingsspråk (på engelsk assembler ): Også kalt mnemonic eller mnemonic, de er et første abstraksjonsnivå. De er ikke lenger direkte kjørbare programmer av datamaskinen, men menneskeforståelige kildekodetekster som trenger et eller annet verktøy (i hovedsak en kompilator ) for deres oversettelse til maskinspråk som CPU kan utføre. Instruksjonene deres er vanligvis en forkortelse for maskininstruksjonen de symboliserer, og har en nesten direkte (en-til-en) korrespondanse til maskininstruksjonene de representerer. Den resulterende koden fra assemblerspråkkompileringen genererer kjørbar binær maskinkode. De er instruksjoner som setter sammen gruppene av brytere som er nødvendige for å uttrykke en minimal aritmetisk logikk. De er nært knyttet til maskinvaren. Noen av disse instruksjonene kan for eksempel være MOVå flytte data fra ett sted til et annet, eller ADDå legge til to verdier. Som en generell regel er de tilgjengelige på firmware-, cmos- eller brikkesettnivå. Disse språkene er prosessorienterte. Prosesser er bygd opp av oppgaver. De inneholder like mange instruksjoner som maskinvarearkitekturen er designet for. CISC -arkitekturen inneholder mange flere instruksjoner på dette nivået enn RISC . De andre språkene som fullfører klassifiseringen vil ikke lenger være lavnivåspråk.
  3. Mellomnivåspråk : De er de som, basert på tilgjengelige instruksjonssett (brikkesett), tillater bruk av funksjoner på aritmetisk nivå, men på det logiske nivået er de avhengige av bokstaver i sammenstilling. Disse språkene er prosedyreorienterte. Prosedyrer er bygget opp av prosesser.

Maskininteraksjon

I denne typen språk jobbes det på instruksjonsnivå, det vil si at programmeringen er ned til minste detalj, og den er også fullstendig maskinorientert.

Første generasjon

Første generasjons programmeringsspråk (for dets akronym på engelsk: 1GL ), er maskinkodespråket . Det er det eneste språket som en mikroprosessor forstår innfødt. Maskinspråk, ettersom det består av enere og nuller, er vanskelig å lese og har stor sannsynlighet for å ta feil når det skrives inn, derfor er det sjelden at en person bruker det direkte.

Instruksjoner på maskinspråk består av ett eller to instruksjonsminner, og andre minner med data (se artikkeladresseringsmoduser )

Eksempel, en instruksjon i maskinspråk i henhold til Z80 mikroprosessoren
minneindeks Binær heksadesimal Betydning
0 10000111 87 Legg til det som er i følgende minne til akkumulatorminnet
1 01110111 77 Faktum. Tall 119 i desimal og 77 i heksadesimal.

Andre generasjon

Andre generasjons programmeringsspråk (for dets akronym på engelsk: 2GL ), er assembly-språket . Fremskrittet med hensyn til den forrige er at i stedet for enkle enere og nuller, er det mnemonikk allerede skrevet som en tekst, og synlige data ved siden av mnemonikken. Dette krever et program som oversetter mnemonics til maskinspråk.

En assemblerspråkprogrammerer må kjenne arkitekturen til prosessoren (for eksempel detaljene til registrene eller instruksjonssettet ).

Se også