Podstawy Architektury Komputerów, czyli robimy VM

Prowadzący: Michał Szeląg


Zadania kwalifikacyjne:
Kategorie:
informatyka stosowana

Podstawy Architektury Komputerów, czyli piszemy własny wirtualny komputer w pythonie

Wczesne komputery osobiste w latach `70 i `80 były na tyle proste, że jeden programista był w stanie znać cały komputer jak własną kieszeń i przejrzeć cały firmware.
Niestety obcne komputery sa zdecydowanie bardziej skompilkowane; np podstawowa dokumentacja procesora zgodnego z x86 liczy ponad trzy tysiące stron. Z tego względu postanowiłem odejść od tłumaczenia architektury x86 i zamiast tego zaproponować stworzenie nowej, bardzo trywialnej architektury systemu komputerowego oraz emulatora do niej.

Na warsztatach zaimplementujemy podstawową funkcjonalność maszyny, dowiemy się jakich z rozwiązań korzystają współczesne architektury, poznamy różne sposoby virtualizacji oraz zaprogramujemy coś w stworzonej przez nas maszynie.

 


Plan zajęć (przybliżony i orientacyjny):

Program może ulec zmianom zarówno w zakresie tempa, jak i tematyki.
- rejestry procesora
- kod maszynowy
- zestaw instrukcji
- pamięc operacyjna
- komunikacja
- przerwania
- programowalny timer
- przykładowy kompilator
- emulator
a dodatkowo jeżeli starczy czasu to poszukamy nieścisłości związanych z naszą maszyną i w jaki sposób one mogłyby prowadzić do błedów / napiszemy interpreter języka Brain Fuck na naszej maszynie

każda z części będzie miała moją krótką ogólną pogadankę teoretyczną, oraz część praktyczną


Wymagania:
Umiejętność czytania asma, podstawy pythona


Dodatkowe informacje:
w razie pytań m.sabbay.szelag@gmail.com