Kaj je skupinski jezik?

Včasih imenovan montažni ali ASM, je zbirni jezik nizkocenovni programski jezik.

Programi, napisani v zbirnih jezikih, sestavi asembler. Vsak sestavljalec ima svoj zbirni jezik, ki je zasnovan za eno specifično računalniško arhitekturo.

Strojni jezik je samo serija številk, ki ljudem ni lahko brati. Z uporabo ASM lahko programerji pišejo človeku berljive programe, ki ustrezajo skoraj točno strojnemu jeziku.

Pomanjkljivost je, da mora biti vse, kar računalnik počne, opisano izrecno, natančno. Prednost je v tem, da ima programator največji nadzor nad tem, kaj računalnik počne.

Zakaj je ASM jezik "nizke ravni"?

Sestavljanje se imenuje programski jezik na nizki ravni, ker obstaja (skoraj) razmerje ena oseba med tem, kar pove računalniku, in kaj počne računalnik. Na splošno ena vrstica zbirnega programa vsebuje največ eno navodilo za računalnik.

Kako se ASM razlikuje od jezika "na visoki ravni"?

Jeziki na visoki ravni zagotavljajo abstraktne operacije na nizki ravni, ki omogočajo, da se programer bolj osredotoči na opisovanje tega, kar želijo, in manj na to, kako naj bi to storili . Programiranje na ta način je bolj priročno in omogoča lažje branje programov pri žrtvovanju nizke ravni nadzora.

Programi, napisani v jezikih na visoki ravni, se ne bodo nikoli ujemali s surovo hitrostjo in učinkovitostjo programov, napisanih v skupščini. Primeri jezikov na visoki ravni so Python, Java, JavaScript, Clojure in Lisp.

Kaj je jezik srednje ravni?

Jeziki na srednji ali nižji ravni zagotavljajo nekaj abstraktov na visoki ravni, da olajšajo življenje programerja, hkrati pa še vedno omogočajo dostop do operacij nizke ravni. Pogosto se uporabljajo za pisanje operacijskih sistemov, zato se včasih imenujejo sistemski programski jeziki .

Programi, napisani v jezikih srednje ravni, lahko delujejo dobro ali skoraj tako kot programi, napisani v zbirnem jeziku. Primeri programskih jezikov srednjega razreda so C, C ++, Ada, Nim in Rust.

Ali je ASM prenosen?

Ker zbirni jeziki so povezani z eno specifično arhitekturo računalnika, niso prenosljivi. Program, ki je napisan v enem zborniku, bi moral biti v celoti preoblikovan, da se lahko izvaja na drugem tipu računalnika.

Prenosljivost je ena glavnih prednosti jezikov višje ravni. C programski jezik se pogosto imenuje "prenosni sklop", ker C prevajalci obstajajo za skoraj vsako moderno arhitekturo sistema. Program, ki je napisan v C, lahko zahteva nekaj sprememb, preden se bo prevedel v drug računalnik, vendar je osnovni jezik prenosen.

Na splošno velja, da je jezik višjega nivoja, manj sprememb je treba narediti, da se bo izvajal na drugi arhitekturi. Jeziki najnižje ravni - strojni jezik in asemblerski jezik - niso prenosljivi.

Primer: Pozdravljeni, Svet! v 32-bitnem sklopu za Windows

Tukaj je "Hello, World" napisana za 32-bitni procesor Intel. Izvajal se bo tudi na 64-bitnem procesorju. Bomo prevedli in zagnali na Windows 10.

 global _main extern _printf section .text _main: push sporočilo klic _printf add esp, 4 ret message: db 'Pozdravljeni, svet!', 10, 0 

Za začetek odprite beležnico. Kopirajte in prilepite zgornjo kodo v novo besedilno datoteko in jo shranite kot hello.asm .

Za sestavljanje bomo uporabili NASM, Netwide Assembler. Lahko jo prenesete na naslovu //www.nasm.us/.

 nasm -f win32 hello.asm 

Ko zaženete ta ukaz, NASM ustvari objektno datoteko. Objektna datoteka vsebuje strojno kodo, vendar ni povsem izvedljiva datoteka. Naša objektna datoteka se imenuje hello.obj .

Za izdelavo izvedljive datoteke bomo uporabili 32-bitno različico MinGW (Minimalno GNU za Windows), ki bo zagotovila prevajalnik gcc. Prenesete ga lahko na naslovu //www.mingw.org/.

 gcc -o hello.exe hello.obj 
 zdravo 
 Pozdravljen, svet! 

Primer: Pozdravljeni, Svet! v 64-bitnem sklopu za Linux

Tukaj je "Hello, World" napisano za 64-bitni procesor Intel. Prevedli bomo in zagnali na 64-bitnem Linuxu.

 extern printf; funkcijo C printf, ki se imenuje razdelek .data; Podatkovni razdelek, inicializirane spremenljivke msg: db "Zdravo, svet!", 0; Niz C se konča z 0 fmt: db "% s", 10, 0; Printf format, "" n ", " 0 "odsek .text; Začni oddelek kode za glavno glavno; standardna vstopna točka gcc glavna:; oznako programa za vstopno točko push rbp; nastavite stack okvir, mora biti poravnana mov rdi, fmt mov rsi, msg mov rax, 0; lahko je tudi: xor rax, rax call printf; Pokličite funkcijo C printf pop rbp; obnoviti stack mov rax, 0; normalno, brez napake, povratna vrednost ret; vrnitev 

Program kopirajte in prilepite v novo datoteko z imenom hello.asm .

Nato sestavite sklop z NASM, ki ga lahko namestite pri upravitelju paketov. Na primer, v Ubuntu ali Debian lahko namestite NASM z uporabo apt:

 sudo apt update & & sudo apt namestitev nasm 

Zaženite ta ukaz, da ustvarite objektno datoteko:

 nasm -f elf64 hello.asm 

Objektna datoteka se imenuje hello.o .

Nato uporabite gcc, da povežete to objektno datoteko s potrebnimi knjižnicami v računalniku in jo prevedite v izvršljivo datoteko z imenom hello :

 gcc hello.o -o zdravo 

Nazadnje zaženite izvršljivo datoteko:

 ./zdravo 
 Pozdravljen, svet! 

Za referenco je to isti program, napisan v jeziku C:

 #include int main () {char msg [] = "Pozdrav svet, n"; printf ("% s return 0; } 

  • Glejte rutine za odpravljanje napak za druge primere nizkocenovne zbirne kode in dodatne informacije o tem, kaj vsak podprogram izvaja.
  • Za dodatne primere zbirnega jezika si oglejte spletno stran Happy Codings.

2GL, asembler, jezik nizke ravni, strojni jezik, programski izrazi