Uniwersytet Warszawski - Centralny System Uwierzytelniania
Strona główna

Programowanie w asemblerze

Informacje ogólne

Kod przedmiotu: 1000-2M11PWA
Kod Erasmus / ISCED: 11.303 Kod klasyfikacyjny przedmiotu składa się z trzech do pięciu cyfr, przy czym trzy pierwsze oznaczają klasyfikację dziedziny wg. Listy kodów dziedzin obowiązującej w programie Socrates/Erasmus, czwarta (dotąd na ogół 0) – ewentualne uszczegółowienie informacji o dyscyplinie, piąta – stopień zaawansowania przedmiotu ustalony na podstawie roku studiów, dla którego przedmiot jest przeznaczony. / (0613) Tworzenie i analiza oprogramowania i aplikacji Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
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) Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
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.

Przedmiot nie jest oferowany w żadnym z aktualnych cykli dydaktycznych.
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.
ul. Banacha 2
02-097 Warszawa
tel: +48 22 55 44 214 https://www.mimuw.edu.pl/
kontakt deklaracja dostępności USOSweb 7.0.3.0-2b06adb1e (2024-03-27)