event:codenight:programovani
Table of Contents
Základy x86 assembleru (1-2 večery)
Sylabus:
- Základní kurz architektury x86 / x86_64 - nebudou z vás zruční assembleroví programátoři, ale se štěstím budete schopni pochopit, co nějaká jednodušší posloupnost instrukcí (třeba disassemblovaná funkce) dělá
- AT&T vs. Intel syntax assembleru
- Registry, zásobník
- Paměť a její adresování, režimy procesoru (stručně)
- Základní instrukční sada; přesuny dat, aritmetika, skoky, cykly
- Testy a příznaky
- Binární kódování instrukcí (stručně)
- GNU toolchain: Překlad assembleru, disassemblování, cvičení
- SystemV ABI
- Funkce v assembleru: předávání parametrů, zásobník podruhé (stack frames)
- Systémová volání: předávání parametrů, návratová hodnota, příklady
- FP, MMX, SSE, AVX registry a instrukce (stručně)
Je dobré mít s sebou linuxový notebook, není to ale nutné (na cvičné úlohy asi bude čas až na konci sezení pozdě večer). Odhadovaná délka cca 2.5h.
Jazyk C pořádně (1-2 večery)
- Není určeno pro úplné začátečníky (to asi lze změnit, bude-li poptávka) - očekává se, že máte s C praktickou zkušenost, už jste v C pár programů napsali a víte, jak se používá printf(), jak se zhruba pracuje s poli a pointery a co je to Cčkový string
- Účel je znalosti Cčka shrnout, zesystematizovat, rozšířit - povíme si něco o Cčkové specifikaci (specifikacích), všechny základní Cčkové koncepty projdeme znovu, vysvětlíme pořádně typový systém (jak číst složité deklarace?), co je a co není definované, vysvětlíme původ některých temnějších aspektů jazyka, co umí preprocesor, šikovná GNU rozšíření, průvodce standardními hlavičkovými soubory
- Trochu podle http://mj.ucw.cz/papers/cecko.pdf
Perl Crash Course (1-2 večery)
- Praktický úvod do jazyka Perl 5; očekává se zkušenost s programováním a základní znalost regulárních výrazů
- Syntaxe, typy proměnných (skalár, list, hash; kontext; proměnná $_), základní příkazy a operátory, cykly a podmínky; perldoc
- Perlové regulární výrazy a jejich použití
- Onelinery, implicitní cyklus
- Složitější datové struktury, reference; Data::Dump
- Základní práce se soubory: filehandles
- Funkce, práce s parametry
- Anonymní funkce, práce se seznamy pomocí map, grep, sort
- Jemný úvod do perlových modulů; packages, CPAN
- Pokročilejší témata dle zájmu:
- Jemný úvod do perlového objektového systému; Moose
- Základní práce s databázemi; DBI
- Asynchronní programy; POE (brmdoor)
- Výjimky: eval + die :)
Lowlevel Linux Userspace (dva večery?)
- Vnitřnosti Linuxu pohledem aplikačního programátora; prerekvizita: znalosti v rozsahu přednášky “Základy x86 assembleru”, základy UNIXu a praktické zkušenosti s jazykem C
- Standardy, POSIX, SystemV ABI
- Rozhraní jádra
- Systémová volání
- Syscall ptrace() for fun'n'profit
- Syscall mmap() for fun'n'profit
- Signály jako rozhraní pro předávání zpráv
- Trap signály SIGILL a SIGSEGV
- Formát ELF
- Toolchain pro překlad Cčkových programů
- Co se děje při spouštění programu: execve(), binfmt handler, parametry předávané programu, crt1
- Dynamický linker ld.so a jeho praktické featury
- Symboly, relokace, GOT
- Case studies: retty, linuxtycoon, screenenv
recording: http://nat.brmlab.cz/talks/2013-12-11-assembler.mkv video
event/codenight/programovani.txt · Last modified: 2015/06/07 17:46 by ruza