Uniwersytet Warszawski - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Programowanie w asemblerze

Informacje ogólne

Kod przedmiotu: 1000-2M11PWA Kod Erasmus / ISCED: 11.303 / (0612) Database and network design and administration
Nazwa przedmiotu: Programowanie w asemblerze
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty monograficzne dla III - V roku informatyki
Przedmioty obieralne dla informatyki
Punkty ECTS i inne: 6.00
zobacz reguły punktacji
Język prowadzenia: angielski
Rodzaj przedmiotu:

monograficzne

Wymagania (lista przedmiotów):

Architektura komputerów i sieci 1000-212bAKS

Założenia (lista przedmiotów):

Architektura komputerów i sieci 1000-212bAKS

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.

Zajęcia w cyklu "Semestr zimowy 2018/19" (zakończony)

Okres: 2018-10-01 - 2019-01-25
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Zbigniew Jurkiewicz
Prowadzący grup: Zbigniew Jurkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin

Zajęcia w cyklu "Semestr zimowy 2019/20" (w trakcie)

Okres: 2019-10-01 - 2020-01-27
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Zbigniew Jurkiewicz
Prowadzący grup: Zbigniew Jurkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.