Jazyk zhromaždenia: Ako sa naučiť kódovať zostavenie dnes

zverejnenie: Vaša podpora pomáha udržiavať web v prevádzke! Za niektoré zo služieb, ktoré odporúčame na tejto stránke, získavame poplatok za sprostredkovanie.


Zostavovací jazyk je extrémne nízkoúrovňový programovací jazyk, ktorý má korešpondenciu 1: 1 strojovému kódu – sériu binárnych inštrukcií, ktoré posúvajú hodnoty do registrov v CPU (alebo iných mikroprocesoroch) a von z nich..

úvod

Mikroprocesor je mechanická kalkulačka. Má niekoľko pomenovaných registrov, ktoré sú ako držiace perá pre čísla. Prijíma inštrukcie vo forme strojového kódu, ktorý je reprezentovaný sériou binárnych bitov (1s a 0s). Napríklad tu je riadok strojového kódu:

10110000 01100001

Prvých pár bitov (10110) je inštrukcia na skopírovanie hodnoty do registra. Nasledujúce tri číslice (000) označujú register, do ktorého sa hodnota skopíruje. Zvyšok (01100001) je hodnota, ktorá sa má skopírovať.

10110 samozrejme nemá zmysel a počítač nevie, že to znamená „skopírujte hodnotu“. Procesor je navrhnutý tak, že séria elektrických impulzov predstavovaných 10110 (zapnutie-vypnutie-zapnutie-vypnutie) spôsobí požadovaný výsledok. Toto je časť toho, čo sa myslí „mechanickým“.

Teraz, keď sa chystáte napísať program na vykonanie procesora, viete si predstaviť, že by písanie tisícok riadkov po 1 s a 0 bolo únavné a náchylné na chyby. Riešením je montážny jazyk. Zostavovací jazyk poskytuje človeku zrozumiteľné substitúcie za dlhé reťazce binárneho kódu.

príklad

Napríklad, ak 10110 znamená „presunúť hodnotu“, mohli by sme ju skrátiť pomocou príkazu MOV.

Mohli by sme tiež dať tomuto registru jednoduchšie zapamätateľné meno (v tomto prípade sa register nazýva AL).

Nakoniec by sme mohli vykresliť hodnotu v inom systéme číslovania, napríklad v desiatkovej (91) alebo hexidimálnej (61). Táto línia by potom bola MOV AL, 61. Akonáhle je takto napísaný celý program, môže zostavovateľ ľahko preložiť každý riadok do príslušného binárneho zobrazenia.

Počítače pracujú (vykonávajú výpočty, presúvajú údaje, transformujú údaje) spracovaním miliárd týchto malých inštrukcií za sekundu.

Veľmi jednoduché pokyny (presunúť túto hodnotu, skopírovať túto hodnotu, pridať tieto dve hodnoty spolu a uložiť ich tam) kombinujú do zložitých operácií, ktoré sa kombinujú na vyšších a vyšších úrovniach, aby skutočne robili veci, ktoré by ste považovali za zmysluplné.

Jazykové zdroje zhromaždenia

Zdroje online

Návody a základné príručky

  • Výukový program pre programovanie zostáv z bodu Výuky

  • X86 Assembly Language Programming, kapitola z príručky pre vývojárov FreeBSD, ktorá pomáha písať jazyk zostavovacieho jazyka v kontexte vývoja operačného systému.

  • Pozdravte zhromaždenie X64, celkom jemný úvod do zhromaždenia, z blogu Code as Art

  • X86 Assembly Language Programming, ďalší tutoriál, ktorý umiestňuje jazyk assembleru dobre do kontextu programovania OS, tento s odkazom na Linux, Windows a dokonca aj niečo o Mac OS X

  • PC Assembly Language, to sa zameriava na 32-bitové počítače so systémom Linux, Windows alebo FreeBSD

  • X86 Assembly Guide, z oddelenia informatiky na University of Virginia

  • Webster: účtuje sa ako „miesto na internete, kde sa môže učiť jazyk, v ktorom sa zhromažďuje“. Túto stránku (zrejme) prevádzkuje autor The Art of Assembly Language a vynálezca HLA

  • Výukový program pre Linux

  • Ľahké X86-64

  • Zhromaždenie X86

  • Výukový program pre program Windows Assembly (pdf)

Videonávody

  • Výukový programovací program pre montážne jazyky, veľmi dôkladná séria 55 videozáznamov o zostavení, ktorá vychádza z knihy Zostavovací jazyk pre procesory x86 (6. vydanie) od Kip Irvine (ak nesledujete videá, pravdepodobne budete chcieť novšie vydanie)

  • Video kurz programovacieho jazyka pre montážny program, 70-dielny videozáznam, vyučovaný Arthurom Griffithom, ktorý má veľmi ľudový šarm

  • Assembly Language Intro, prednáška v triede v Cornell, predstavujúca jazyk zostavy

  • Programovanie v jazyku montáže, hodinový úvod do montáže a skvelý formát, ak sa vám skutočne páčili nasledujúce príklady algebry na projektore na vysokých školách (toto je súčasť väčšej série mikroprocesorov a mikrokontrolérov)..

referencie

  • Zoznamy inštrukcií X86, úplný zoznam všetkých inštrukcií pre architektúry x86, s poznámkami o tom, kedy boli pridané

  • X86 Opcode and Reference Reference

  • Cheat Sheet montážneho jazyka spoločnosti Intel X86 (pdf).

náradie

Zostavovatelia – existuje veľa zostavovateľov – tu je niekoľko najpopulárnejších bezplatných a otvorených zostavovateľov:

  • NASM

  • Flat Assembler

  • YASM

  • GASM.

IDE (Integrated Development Environments):

  • SASM, jednoduchý crossplatform IDE pre montážne jazyky NASM, MASM, GAS, FASM

  • Čerstvý IDE, vizuálny jazykový kód IDE so vstavaným assemblerom FASM

  • WinAsm Studio, bezplatné IDE pre vývoj 32-bitových programov Windows a 16-bitových programov DOS pomocou Assemblera

  • Vizuálny MASM.

Komunitné a priebežné vzdelávanie

  • Zhromaždenie fóra na Dream.In.Code

  • Fórum MASM

  • Zhromaždenie jazyka a strojového kódu na hack fórach

knihy

  • The Art of Assembly Language (online vydanie) je jednou z najpopulárnejších kníh o montážnom jazyku, od čitateľného časopisu No Starch Press; možno vás zaujímajú aj od toho istého autora: Napíšte veľký kód: Zväzok 1: Porozumenie stroju a napíšte skvelý kód, zväzok 2: Myslenie na nízkej úrovni, písanie na vysokej úrovni

  • Jazyk montáže krok za krokom: Programovanie v systéme Linux

  • Profesionálny montážny jazyk

  • Zostavovací jazyk pre procesory x86

  • Moderné programovacie jazyky X86: 32-bit, 64-bit, SSE a AVX

  • Úvod do 64 bitového programovania zhromaždenia pre systémy Linux a OS X: tretie vydanie – pre systémy Linux a OS X

  • Úvod do jazykovej a počítačovej architektúry zostavy 80X86

  • Programovanie v jazyku montáže: Pre PC a prenosné počítače.

Ak sa naučíte jazyk zhromaždenia?

To, či by ste sa mali naučiť jazyk zostavy, závisí od toho, aké sú vaše ciele. Pre väčšinu vývojárov je odpoveď „nie“.

Existujú dva hlavné dôvody, prečo sa učiť jazyk assembleru: pretože ho chcete používať priamo alebo preto, že chcete počítačom porozumieť na základnej úrovni.

Z praktického hľadiska iba montážna hŕstka inžinierov a počítačových vedcov v skutočnosti používa jazyk zhromaždenia.

Prevažná väčšina vývoja softvéru, vrátane prakticky všetkých aplikácií akéhokoľvek druhu, používa programovacie jazyky na vysokej úrovni, a nie zostavovací kód. Niektoré špecifické oblasti, v ktorých sa používa jazyk zostavy, sú:

  • Operačné systémy

  • firmware

  • Ovládače zariadení

  • Jazykový dizajn

  • Dizajn prekladača

  • Vložené systémy

  • Návrh hardvéru

  • Pokročilá kryptografia

  • Teoretická informatika

Ďalším dôvodom, prečo sa naučiť jazyk zostavovania, je iba lepšie porozumieť tomu, čo sa vlastne deje hlboko vo vnútornostiach počítača. (Z tohto dôvodu sa prakticky všetci odborníci v oblasti počítačových vied musia naučiť jazyk zhromažďovania.)

Samozrejme, ak ste typ človeka, ktorý sa o to skutočne zaujíma, možno budete chcieť premýšľať o kariére, ktorá pracuje v oblasti vývoja systémov na nízkej úrovni..

Ďalšie veci, ktoré sa treba naučiť

Sú niektoré jazyky, v ktorých, ak viete len málo, môžete urobiť veľa. Python a Ruby sú takí – cez víkend sa môžete dosť naučiť, aby ste si vytvorili niečo, čo stojí za to. Zostavovací jazyk nie je taký.

Zostavovací jazyk sa vo vákuu nikdy nepoužíva. Typ inžiniera, ktorý potrebuje poznať montáž, pravdepodobne bude pracovať v oblasti, kde je potrebné poznať niekoľko ďalších zručností, aby boli efektívne. Medzi ne pravdepodobne patria:

  • Hardvérové ​​jazyky, ako VHDL a Verilog, spolu s dobrým porozumením mikroprocesorov a elektrotechniky

  • Jazyky operačného systému nízkej úrovne ako C a jeho deriváty: C ++, C # a D

  • Staršie jazyky ako Fortran a Cobol

  • Jazyky platformy ako Java a Objective-C

  • algoritmy

  • Návrh prekladača, tlmočníka a jazyka.

Ďalšie čítanie a zdroje

Máme veľa ďalších informácií o tomto druhu vecí, programovaní: jazyky, časovej osi & Guides.

Aký kód by ste sa mali naučiť?

Ste zmätení, v akom programovacom jazyku by ste sa mali naučiť kódovať? Pozrite si náš infographic, aký kód by ste sa mali naučiť?

Diskutuje nielen o rôznych aspektoch jazykov, ale odpovedá na dôležité otázky, napríklad: „Koľko peňazí zarobím na programovanie jazyka Java na bývanie?“

Aký kód by ste sa mali naučiť?
Aký kód by ste sa mali naučiť?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map