Surinkimo kalba: kaip išmokti kodavimo susirinkimo šiandien

Atskleidimas: Jūsų palaikymas padeda išlaikyti svetainę! Mes uždirbame siuntimo mokestį už kai kurias paslaugas, kurias rekomenduojame šiame puslapyje.


Surinkimo kalba yra ypač žemo lygio programavimo kalba, turinti „1: 1“ atitiktį kompiuterio kodui – dvejetainių komandų, kurios perkelia vertes į ir iš CPU (ar kito mikroprocesoriaus) registrų, serija..

Įvadas

Mikroprocesorius yra mechaninis skaičiuotuvas. Jis turi daugybę įvardytų registrų, kurie yra tarsi skaičių rašikliai. Jis gauna instrukcijas mašininio kodo pavidalu, kurį vaizduoja dvejetainiai bitai (1s ir 0s). Pvz., Čia yra mašinos kodo eilutė:

10110000 01100001

Pirmieji keli bitai (10110) yra nurodymas nukopijuoti vertę į registrą. Kiti trys skaitmenys (000) nurodo registrą, į kurį vertė bus nukopijuota. Likusi jo dalis (01100001) yra vertė, kurią reikia nukopijuoti.

Žinoma, 10110 yra beprasmis, o kompiuteris „nežino“, kad reiškia „nukopijuoti vertę“. Procesorius yra suprojektuotas taip, kad elektrinių impulsų serija, vaizduojama 10110 (įjungimas-išjungimas-įjungimas-išjungimas), sukelia norimą rezultatą. Tai yra dalis to, ką reiškia „mechaninis“.

Dabar, jei ketinate rašyti programą procesoriui vykdyti, galite įsivaizduoti, kad rašyti tūkstančius 1 ir 0 eilučių būtų nuobodus ir klaidingas. Sprendimas yra surinkimo kalba. Asamblėjos kalba suteikia žmonėms suprantamus ilgų dvejetainių kodų pakeitimus.

Pavyzdys

Pvz., Jei 10110 reiškia „perkelti vertę“, tada mes galime ją sutrumpinti MOV komanda.

Taip pat galėtume suteikti 000 registrui lengviau įsimenamą pavadinimą (šiuo atveju registras pavadintas AL).

Galiausiai vertę galėtume pateikti kitoje numeravimo sistemoje, pavyzdžiui, dešimtainėje (91) arba heksideximalioje (61). Tada ta linija būtų „MOV AL“, 61 m. Kai visa programa yra parašyta tokiu būdu, surinkėjas gali lengvai išversti kiekvieną eilutę į atitinkamą dvejetainį atvaizdą.

Kompiuteriai dirba (atlieka skaičiavimus, perkelia duomenis, transformuoja duomenis), per sekundę apdorodami milijardus šių mažyčių instrukcijų.

Labai paprastos instrukcijos (perkelkite šią vertę, nukopijuokite šią vertę, pridėkite šias dvi reikšmes kartu ir išsaugokite vertę ten) sujungiamos, kad sudarytų sudėtingas operacijas, kurios sujungiamos aukštesniame ir aukštesniame lygiuose, kad iš tikrųjų atliktumėte dalykus, kuriuos pripažintumėte kaip reikšmingus..

Asamblėjos kalbos ištekliai

Internetiniai šaltiniai

Pamokos ir pagrindiniai vadovai

  • Asamblėjos programavimo vadovėlis iš vadovėlio punkto

  • „X86 Assembly Language Programming“, skyrius iš „FreeBSD Developers“ vadovo, kuris padeda sudėti kalbų rašymą operacinės sistemos kūrimo kontekste

  • Pasakykite „Hello to X64 Assembly“, gana švelnų įvadą apie surinkimą, iš tinklaraščio „Code as Art“

  • „X86 Assembly Language Programming“ – tai dar viena pamoka, kurioje asamblėjos kalba gerai išdėstoma jos OS programavimo kontekste, ši nuoroda į „Linux“, „Windows“ ir dar šiek tiek apie „Mac OS X“.

  • „PC Assembly Language“ – tai 32 bitų kompiuteriai, kuriuose veikia „Linux“, „Windows“ ar „FreeBSD“

  • „X86 Assembly Guide“ iš Virdžinijos universiteto Kompiuterių katedros

  • Websteris: pati atsiskaito kaip „Vieta mokytis asamblėjos kalbos“. Šią svetainę (matyt) tvarko „The Art of Assembly Language“ autorius ir HLA išradėjas.

  • „Linux Assembly Tutorial“

  • Lengvas X86-64

  • X86 asamblėja

  • „Windows Assembly“ programavimo vadovėlis (pdf)

Vaizdo pamokos

  • Asamblėjos kalbos programavimo vadovėlis, labai išsami 55 vaizdo įrašų serija, surinkta po Kipo Irvine’o knygos „Montažo kalba x86 procesoriams“ (6-asis leidimas) (jei nesekate vaizdo įrašų, greičiausiai norėsite naujesnio leidimo)

  • „Assembly Language“ programavimo vaizdo įrašų kursas, 70 dalių vaizdo serija, kurią dėsto Artūras Griffithas, pasižymintis labai liaudišku žavesiu

  • „Assembly Language Intro“, auditorijos paskaita Kornelyje, supažindinanti su susirinkimo kalba

  • Programa „Assembly Language“, valandos trukmės supažindinimas su surinkimu ir puikus formatas, jei jums labai patiko sekti algebros pavyzdžius ant projektoriaus, kai mokėtės vidurinėje mokykloje (tai yra dalis didesnių mikroprocesorių ir mikrovaldiklių serijų)..

Nuoroda

  • „X86“ instrukcijų sąrašai, visas „x86“ architektūros instrukcijų sąrašas su pastabomis apie jų pridėjimą

  • „X86“ kodas ir instrukcijos nuoroda

  • „Intel X86 Assembly Language Cheat Sheet“ (pdf).

Įrankiai

Surinkėjai – yra daugybė surinkėjų – čia yra keletas populiariausių nemokamų ir atvirojo kodo surinkėjų:

  • NASM

  • FASM

  • YASM

  • GASM.

IDE (Integruota kūrimo aplinka):

  • SASM, NASM, MASM, GAS, FASM kalbų paprastas crossplatform IDE NASM, MASM, GAS, FASM

  • Nauja IDE, vaizdinės surinkimo kalbos IDE su įmontuotu FASM surinkėju

  • „WinAsm Studio“, nemokamas IDE, skirtas 32 bitų „Windows“ ir 16 bitų DOS programoms kurti naudojant „Assembler“

  • Vizualinis MASMAS.

Bendruomenė ir nuolatinis mokymasis

  • Asamblėjos forumas „Dream.In.Code“

  • MASM forumas

  • Surinkimo kalba ir mašinos kodas „Hack“ forumuose

Knygos

  • „Art of Assembly Language“ (internetinis leidimas) yra viena populiariausių knygų apie asamblėjos kalbą iš visada skaitomų „No Starch Press“; jus taip pat gali sudominti tie patys autoriai: Rašykite puikų kodą: 1 tomas: Supraskite mašiną ir parašykite puikų kodą, 2 tomas: Žemai mąstykite, rašykite aukšto lygio

  • Asamblėjos kalba žingsnis po žingsnio: programavimas naudojant Linux

  • Profesionali asamblėjos kalba

  • „X86“ procesorių surinkimo kalba

  • Šiuolaikinis „X86“ asamblėjos kalbos programavimas: 32 bitų, 64 bitų, SSE ir AVX

  • 64 bitų programavimo programa „Linux“ ir „OS X“: trečiasis leidimas – „Linux“ ir „OS X“

  • Įvadas į 80X86 montažo kalbą ir kompiuterinę architektūrą

  • Asamblėjos kalbos programavimas: asmeniniams ir nešiojamiesiems kompiuteriams.

Ar reikėtų išmokti montažo kalbą?

Tai, ar turėtumėte išmokti montažo kalbą, priklauso nuo to, kokie yra jūsų tikslai. Daugeliui kūrėjų atsakymas yra „ne“.

Yra dvi pagrindinės priežastys išmokti surinkimo kalbą: todėl, kad norite ją naudoti tiesiogiai, arba todėl, kad norite suprasti kompiuterius pagrindiniu lygiu.

Praktiniu požiūriu tik santykinai nedaugelis pasaulio inžinierių ir kompiuterių mokslininkų iš tikrųjų naudoja surinkimo kalbą.

Didžioji dauguma programinės įrangos kūrimo, įskaitant beveik bet kokio pobūdžio programų plėtrą, naudoja aukšto lygio programavimo kalbas, o ne surinkimo kodą. Kai kurios konkrečios sritys, kuriose naudojama surinkimo kalba, yra:

  • Operacinės sistemos

  • Firmware

  • Įrenginių tvarkyklės

  • Kalbos dizainas

  • Kompiliatoriaus dizainas

  • Įterptinės sistemos

  • Techninės įrangos projektavimas

  • Išplėstinė kriptografija

  • Teorinis informatika

Kita priežastis išmokti montažo kalbos yra tiesiog geriau suprasti, kas iš tikrųjų vyksta giliai kompiuterio žarnyne. (Štai kodėl beveik visi informatikos mokslų daktarai turi mokėti montažo kalbą.)

Žinoma, jei esate tas žmogus, kuris tuo tikrai domisi, galbūt norėsite galvoti apie karjerą dirbdami žemo lygio sistemų kūrimo srityje.

Kiti dalykai, kuriuos reikia išmokti

Yra keletas kalbų, kur, jei moki tik nedaug, gali padaryti daug. Python ir Ruby yra tokie – savaitgalį galite išmokti pakankamai, kad sukurtumėte ką nors vertingo. Asamblėjos kalba nėra tokia.

Surinkimo kalba niekada nenaudojama vakuume. Inžinieriaus tipas, kuris turi žinoti surinkimą, greičiausiai dirba ten, kur reikia žinoti keletą kitų įgūdžių, kad jis būtų efektyvus. Tai gali būti:

  • Techninės įrangos kalbos, tokios kaip VHDL ir „Verilog“, taip pat geras mikroprocesorių ir elektrotechnikos supratimas

  • Žemo lygio operacinės sistemos kalbos, tokios kaip C ir jos dariniai: C ++, C # ir D

  • Senosios kalbos, tokios kaip „Fortran“ ir „Cobol“

  • Platformos kalbos, tokios kaip „Java“ ir „Objective-C“

  • Algoritmai

  • Sudarytojas, vertėjas ir kalbos dizainas.

Tolesni skaitymai ir šaltiniai

Turime daug daugiau informacijos apie šią medžiagą, programavimą: Kalbas, laiko juostą & Gidai.

Kokį kodą turėtumėte išmokti?

Nesuprantate, kokią programavimo kalbą turėtumėte išmokti koduoti? Peržiūrėkite mūsų infografiką, kokį kodą turėtumėte išmokti?

Jame ne tik aptariami skirtingi kalbų aspektai, bet ir atsakoma į svarbius klausimus, tokius kaip: „Kiek uždirbsiu„ Java “programavimui pragyvenimui?“

Kokį kodą turėtumėte išmokti?
Kokį kodą turėtumėte išmokti?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me