Mikä on kokoonpanokieli?

Joskus kutsutaan kokoonpanoksi tai ASM: ksi, kokoonpanokieli on matalan tason ohjelmointikieli.

Kokoonpanija laatii kokoonpanokielillä kirjoitetut ohjelmat. Jokaisella kokoonpanijalla on oma kokoonpanokieli, joka on suunniteltu yhdelle tietylle arkkitehtuurille.

Koneen kieli on vain joukko numeroita, joita ihmisillä ei ole helppo lukea. ASM: n avulla ohjelmoijat voivat kirjoittaa ihmisen luettavissa olevia ohjelmia, jotka vastaavat lähes täsmälleen konekieliä.

Haittapuolena on se, että kaikki, mitä tietokone tekee, on kuvattava nimenomaisesti ja tarkasti. Etuna on se, että ohjelmoija voi hallita maksimaalisesti sitä, mitä tietokone tekee.

Miksi ASM on "matalan tason" kieli?

Kokoonpanoa kutsutaan matalan tason ohjelmointikieleksi, koska on (lähes) yksi-to-suhde sen, mitä se kertoo tietokoneelle, ja sen, mitä tietokone tekee. Yleensä kokoonpano-ohjelman yksi rivi sisältää enintään yhden käskyn tietokoneelle.

Miten ASM eroaa "korkean tason" kielestä?

Korkeatasoiset kielet tarjoavat matalan tason operaatioita, joiden avulla ohjelmoija voi keskittyä enemmän kuvaamaan sitä, mitä he haluavat tehdä, ja vähemmän siitä, miten se pitäisi tehdä . Tällä tavalla ohjelmointi on helpompaa ja helpottaa ohjelmien lukemista matalan tason valvonnan uhrauksessa.

Korkean tason kielillä kirjoitetut ohjelmat eivät koskaan vastaa kokoonpanossa kirjoitettujen ohjelmien raakaa nopeutta ja tehokkuutta. Esimerkkejä korkean tason kielistä ovat Python, Java, JavaScript, Clojure ja Lisp.

Mikä on "keskitason" kieli?

Keskitason tai alemman tason kielet tarjoavat joitakin korkeatasoisia abstraktioita, jotka helpottavat ohjelmoijan elämää ja tarjoavat silti pääsyn matalan tason toimintoihin. Niitä käytetään usein käyttöjärjestelmien kirjoittamiseen, joten niitä kutsutaan joskus järjestelmäohjelmointikieliksi .

Keskitason kielillä kirjoitetut ohjelmat voivat myös toimia samoin tai lähes samoin kuin ohjelmakielellä kirjoitetut ohjelmat. Esimerkkejä keskitason ohjelmointikielistä ovat C, C ++, Ada, Nim ja Rust.

Onko ASM kannettava?

Koska kokoonpanokielet on sidottu yhteen tiettyyn tietokonearkkitehtuuriin, ne eivät ole kannettavia. Yhdessä kokoonpanokielessä kirjoitettu ohjelma olisi kirjoitettava kokonaan uudelleen, jotta se voidaan ajaa toisella koneella.

Kannettavuus on yksi korkeamman tason kielen tärkeimmistä eduista. C-ohjelmointikieliä kutsutaan usein "kannettavaksi kokoonpanoksi", koska C-kääntäjät ovat lähes jokaiselle nykyaikaiselle järjestelmäarkkitehtuurille. C: ssä kirjoitettu ohjelma voi vaatia joitakin muutoksia, ennen kuin se kääntyy toiselle tietokoneelle, mutta ydinkieli on kannettava.

Yleisesti ottaen korkeamman tason kieli on, sitä vähemmän muutoksia on tehtävä, jotta se toimii toisella arkkitehtuurilla. Alemman tason kielet - konekieli ja kokoonpanokieli - eivät ole kannettavia.

Esimerkki: Hei, maailma! 32-bittisessä kokoonpanossa, Windowsissa

Tässä on kirjoitettu "Hello, World" 32-bittiselle Intel-prosessorille. Se toimii myös 64-bittisellä prosessorilla. Käännämme ja suoritamme sen Windows 10: ssä.

 globaali _main extern _printf-osa .text _main: push message call _printf add esp, 4 viesti: db 'Hello, World!', 10, 0 

Aloita avaamalla Muistio. Kopioi ja liitä yllä oleva koodi uuteen tekstitiedostoon ja tallenna tiedosto hello.asm .

Kokoonpanon kääntämiseksi käytetään NASM: ää, Netwide Assembleriä. Se voidaan ladata osoitteesta // www.nasm.us/.

 nasm -f win32 hello.asm 

Kun suoritat tämän komennon, NASM luo objektitiedoston. Objektitiedosto sisältää konekoodin, mutta se ei ole täysin suoritettava tiedosto. Objektitiedostomme on nimeltään hello.obj .

Kun haluat luoda suoritettavan, käytämme 32-bittistä MinGW -versiota (Minimal GNU for Windows), joka tarjoaa gcc-kääntäjän. Se on ladattavissa osoitteesta http://www.mingw.org/.

 gcc -o hello.exe hello.obj 
 Hei 
 Hei maailma! 

Esimerkki: Hei, maailma! 64-bittisessä kokoonpanossa, Linuxissa

Tässä on kirjoitettu "Hello, World" 64-bittiselle Intel-prosessorille. Käännämme ja suoritamme sen 64-bittisellä Linuxilla.

 extern printf; C printf -toiminto, jota kutsutaan osaksi .data; Tieto-osa, alustetut muuttujat msg: db "Hei, maailma!", 0; C-merkkijono päättyy 0 fmt: db "% s", 10, 0; Printf-muoto, "n", "0" -osiosta. Aloita koodiosio maailmanlaajuisesti; vakio gcc-tulopisteen pää:; sisääntulopisteen ohjelmatarra rbp; asetettu pino-kehys, on kohdistettava mov rdi, fmt mov rsi, msg mov rax, 0; voi olla myös: xor rax, rax call printf; Soita C printf -toiminto pop rbp; palauta pino mov rax, 0; normaali, ei virhettä, palautusarvo; palata 

Kopioi ja liitä tämä ohjelma uuteen hello.asm- tiedostoon.

Sitten koota kokoonpano NASM: n avulla, jonka voit asentaa paketinhallintaan. Esimerkiksi Ubuntuissa tai Debianissa voit asentaa NASM: n käyttämällä apt:

 sudo apt update & & sudo apt asentaa nasmin 

Voit luoda objektitiedoston suorittamalla tämän komennon:

 nasm -f elf64 hello.asm 

Objektitiedosto on nimetty hello.o .

Seuraavaksi käytä gcc: tä linkittämään tämän objektitiedoston tietokoneesi tarvittaviin kirjastoihin ja kääntämällä sen suoritettavaan tiedostoon nimeltä hello :

 gcc hello.o -o hello 

Suorita lopuksi suoritettava tiedosto:

 ./Hei 
 Hei maailma! 

Tämä on sama ohjelma, joka on kirjoitettu C: ssä:

 #include int main () {char msg [] = "Hei maailma"; printf ( "% s \ n", msg); paluu 0; } 

  • Katso debugging-rutiineja muiden esimerkkien osalta matalan tason kokoonpanokoodista ja lisätietoja siitä, mitä kukin rutiini tekee.
  • Lisää esimerkkejä kokoonpanokielestä on Happy Codings -sivustossa.

2GL, Assembler, matalan tason kieli, koneen kieli, ohjelmointitermit