Programowanie w asemblerze
Informacje ogólne
Kod przedmiotu: | 1000-2M11PWA |
Kod Erasmus / ISCED: |
11.303
|
Nazwa przedmiotu: | Programowanie w asemblerze |
Jednostka: | Wydział Matematyki, Informatyki i Mechaniki |
Grupy: |
Przedmioty obieralne dla informatyki Przedmioty obieralne na studiach drugiego stopnia na kierunku bioinformatyka |
Punkty ECTS i inne: |
(brak)
|
Język prowadzenia: | angielski |
Rodzaj przedmiotu: | monograficzne |
Założenia (opisowo): | Celem jest nauczenie studentów programowania w języku wewnętrznym procesora, z uwzględnieniem komunikowania się z systemem operacyjnym i ewentualnie bezpośredniego korzystania z urządzeń. Dodatkowo omówione zostaną zasady generowania kodu fizycznego dla potrzeb implementacji języków programowania, co stanowi uzupełnienie materiału o metodach realizacji języków programowania. W ramach zajęć laboratoryjnych studenci powinni napisać kilka programów na co najmniej dwie różne architektury procesorów: Intel/AMD x86-64/32 i ARM. |
Skrócony opis: |
Celem jest nauczenie studentów programowania w języku wewnętrznym procesora, z uwzględnieniem komunikowania się z systemem operacyjnym i ewentualnie bezpośredniego korzystania z urządzeń. Dodatkowo omówione zostaną zasady generowania kodu fizycznego dla potrzeb implementacji języków programowania, co stanowi uzupełnienie materiału o metodach realizacji języków programowania. |
Pełny opis: |
1. Wiadomości podstawowe: język wewnętrzny, środowisko uruchomieniowe do programowania w asemblerze, proces tworzenia programu. 2. Programowanie niskopoziomowe w języku C. Realizacja podstawowych konstrukcji w języku wewnętrznym. Deasemblacja. 3. Architektura procesora, rejestry, tryby adresowania, format instrukcji języka wewnętrznego, typy instrukcji. 4. Struktura programu: sekcje, deklaracje danych, start programu, korzystanie z funkcji systemowych. Dyrektywy asemblera. 5. Realizacja wywoływania procedur. Adres powrotny. Konwencje przekazywania parametrów (rejestry, stos). Zagnieżdżanie wywołań procedur. Standardy ABI. 6.Łączenie modułów w asemblerze z językami programowania wyższego poziomu. Wstawki asemblerowe. 7. Oprogramowanie niskopoziomowe. Program ładujący. Formaty plików binarnych, relokacja, linkowanie, biblioteki statyczne i dynamiczne. 8. Sterowanie urządzeniami na poziomie sprzętu. Sterowniki urządzeń 9. Niskopoziomowe techniki przełamywania mechanizmów ochrony (np. nadpisywanie stosu, nietypowe wykorzystywanie bibliotek). |
Literatura: |
Pozycje książĸowe: - A.S. Tanenbaum, Structured Computer Organization - Daniel W. Lewis, Między asemblerem a językiem C. Podstawy programowania wbudowanego - M.L. Schmitt, Procesory Pentium Większość literatury jednak jest dostępna w sieci WWW --- na stronie przedmiotu znajdują się odpowiednie odwołania. |
Efekty uczenia się: |
Wiedza Zna problemy, techniki i narzędzia związane z programowanie w języku maszynowym, w szczególności: ● ma pogłębioną wiedzę praktyczną w zakresie architektury procesora, ● ma pogłębioną wiedzę praktyczną w zakresie systemów operacyjnych, zwłaszcza postaci modułów binarnych i bibliotek, ● rozumie zagrożenia dla bezpieczeństwa związane z możliwościami obejścia mechanizmów ochrony dzięki użyciu technik niskopoziomowych, ● zna przykłady kilku architektur procesorów i związanych z nimi API. Umiejętności Potrafi pisać małe i średnie moduły i programy w języku procesora. Kompetencje - potrafi precyzyjnie formułować pytania, służące pogłębieniu własnego zrozumienia danego tematu, w szczególności eksperymentalnie weryfikować dokumentację firmową i uzupełniać napotkane luki. |
Metody i kryteria oceniania: |
Warunkiem zaliczenia jest: - napisanie i uruchomienie w laboratorium 3-4 programów (maks. 70 pkt); - zdanie egzaminu pisemnego (format rozszerzonego testu (maks. 30 pkt). Aby otrzymać pozytywną ocenę należy: - uzyskać w sumie min. 60 pkt; - zdać egzamin co najmniej na 10 pkt. |
Właścicielem praw autorskich jest Uniwersytet Warszawski.