Podstawy Architektury Komputerów, czyli robimy VM

Zadania kwalifikacyjne są tutaj.

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