Detail kurzu
Assembler x86 – základy
KVT vzdelávanie s.r.o.
Popis kurzu
Prečo „dnes“ vôbec programovať v Assembleri, keď máme k dispozícií niekoľko iných moderných a dokonca objektovo orientovaných jazykov? – Touto vetou argumentuje v súčasnosti nejeden programátor. Assembler je pritom najvýkonnejším nástrojom v rukách programátora. Assembler je materinským jazykom procesora a umožňuje nám využiť všetky jeho možnosti a rozšírenia, ktoré sa bez špecializovaných knižníc nedajú pri programovaní vo vyšších jazykoch využiť. Príkladom takýchto rozšírení je pôvodné MMX alebo v súčasnosti SSE a AVX. Aj dnes by sme veľmi ťažko hľadali kompilátor, resp. interpréter, ktorý je natoľko inteligentný, aby vedel generovať strojový kód pre jedno z týchto rozšírení, hoci nám by sa to v danej situácii zdalo mimoriadne výhodné. Je takisto nesprávne považovať Assembler za synonymum operačného systému MS-DOS.
V tomto kurze sa oboznámime s Assemblerom 32-bitového procesora Intel 80386, ktorého architektúra s hľadiska interných registrov a z pohľadu Assemblera zostala prakticky zachovaná aj v dnešných procesoroch. Absolvent kurzu získa znalosti o spôsobe uloženia údajov v počítači, formátu celých a reálnych čísel a o uložení textu v operačnej pamäti. Porozumie rozloženiu virtuálnej pamäte procesu a bude schopný efektívne využívať zásobník. Bude vedieť použiť Assembler ako samostatný jazyk, alebo tvoriť výkonné rutiny v jazyku Assembler vo vyšších programovacích jazykoch.
Obsah kurzu
1. Všeobecný úvod do programovania
- Procesor, operačná pamäť
- Úloha operačného systému z pohľadu programátora
- Rozdelenie programovacích jazykov
- Fyzická a virtuálna pamäť, pamäťové modely, segmentácia a stránkovanie
- Zásobník
- Pojem proces, vlákno, úloha
2. Spôsoby uloženia údajov v počítači
- Číselné sústavy – dvojková, desiatková, šestnásková
- Celé čísla neznamiekové
- Celé čísla znamnienkové a dvojkový doplnok
- Reálne čísla s jednoduchou a dvojitou presnosťou, formát IEEE 754
- Znaky a textové reťazce – Ansi a Unicode kódovanie, formáty LE a BE
- Konverzie medzi číslami a textom
3. Architektúra procesora 80386 a režimy práce
- Viacúčelové (všeobecné) registre
- Segmentové registre
- Čítač inštrukcií a ukazovateľ zásobníka
- Register stavov
- Reálny a chránený režim
- Spôsoby adresovania v operačnej pamäti – priamy operand, register a displacement
- Faktor škálovania
4. Základy jazyka Assembler
- Kompilátory jazyka Assembler
- Štandardná šablóna procesu
- Assembler ako samostatný nástroj
- Assembler ako súčasť vyšších programovacích jazykov
- Volacie konvencie – stdcall a fastcall
- Deklarácia a inicializácia premenných
- Inštrukcie presunu
- Inštrukcie pre prácu so zásobníkom
- Aritmetické inštrukcie pre celočíselnú aritmetiku
- Inštrukcie skokov
- Vetvenie a cykly
- Prepisovanie segmentov
- Zostupná kompatibilita – 16-bitové režimy adresovania a práce s dátami
5. Tvorba vlastných procedúr a funkcií
- Vytvorenie zásobníkového rámca
- Porovnanie blízkych volaní a skokov
- Konvencie PreXP SP2 a PostXP SP2
- Návraty z procedúr a funkcií, návratové hodnoty
- Lokálne premenné
Cieľová skupina
- Základná znalosť programovania v ľubovoľnom jazyku
- Základná orientácia v hardvéri počítača