User Tools

Site Tools


event:codenight:programovani

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
event:codenight:programovani [2013/12/09 03:29] paskyevent:codenight:programovani [2015/06/07 17:46] (current) ruza
Line 1: Line 1:
 +==== 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
 +{{tag>video}}
event/codenight/programovani.txt · Last modified: 2015/06/07 17:46 by ruza