Differences

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

Link to this comparison view

Next revision
Previous revision
event:codenight:programovani [2013/11/11 20:34]
jenda created
event:codenight:programovani [2015/06/07 19: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}}
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki