Programowanie niskopoziomowe: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
=Autor sylabusa= | ==Autor sylabusa== | ||
mgr inż. Grzegorz Mazur | mgr inż. Grzegorz Mazur | ||
Linia 5: | Linia 5: | ||
g.mazur@ii.pw.edu.pl | g.mazur@ii.pw.edu.pl | ||
=Nazwa zajęć= | ==Nazwa zajęć== | ||
'''Programowanie niskopoziomowe''' | '''Programowanie niskopoziomowe''' | ||
=Forma zajęć= | ==Forma zajęć== | ||
wykład (15h) + laboratorium (15h) | wykład (15h) + laboratorium (15h) | ||
=Opis= | ==Opis== | ||
Celem przedmiotu jest zapoznanie słuchaczy z zasadami programowania asemblerowego i hybrydowego oraz z narzędziami do tego służącymi. Treść wykładu obejmuje niezbędne podstawy teoretyczne, w tym opis środowiska pracy programu, zapoznanie z oprogramowaniem narzędziowym (asembler, kompilator C, konsolidator) oraz zasady programowania asemblerowego i hybrydowego. Zajęcia projektowe mają na celu stworzenie przez studenta kilku programów asemblerowych i hybrydowych i praktyczne zapoznanie z zagadnieniami omawianymi w trakcie wykładu. Wykład jest silnie skorelowany z przedmiotem Architektura Komputerów. | Celem przedmiotu jest zapoznanie słuchaczy z zasadami programowania asemblerowego i hybrydowego oraz z narzędziami do tego służącymi. Treść wykładu obejmuje niezbędne podstawy teoretyczne, w tym opis środowiska pracy programu, zapoznanie z oprogramowaniem narzędziowym (asembler, kompilator C, konsolidator) oraz zasady programowania asemblerowego i hybrydowego. Zajęcia projektowe mają na celu stworzenie przez studenta kilku programów asemblerowych i hybrydowych i praktyczne zapoznanie z zagadnieniami omawianymi w trakcie wykładu. Wykład jest silnie skorelowany z przedmiotem Architektura Komputerów. | ||
=Wymagania wstępne= | ==Wymagania wstępne== | ||
Programowanie w języku C | Programowanie w języku C | ||
Linia 23: | Linia 23: | ||
Architektura komputerów (może być równolegle) | Architektura komputerów (może być równolegle) | ||
=Sylabus= | ==Sylabus== | ||
*Wprowadzenie - zastosowanie programowania asemblerowego i hybrydowego, środowisko pracy programu w systemie operacyjnym i bez niego. | *Wprowadzenie - zastosowanie programowania asemblerowego i hybrydowego, środowisko pracy programu w systemie operacyjnym i bez niego. | ||
Linia 33: | Linia 33: | ||
*Wprowadzenie do programowania jednostek wektorowych. | *Wprowadzenie do programowania jednostek wektorowych. | ||
=Literatura= | ==Literatura== | ||
*J. Biernat. ''Arytmetyka komputerów''. PWN, 1996. | *J. Biernat. ''Arytmetyka komputerów''. PWN, 1996. | ||
*Materiały firmowe - dokumenty techniczne dostępne w sieci www - MIPS, Intel, AMD. | *Materiały firmowe - dokumenty techniczne dostępne w sieci www - MIPS, Intel, AMD. | ||
*Specyfikacje ''Application Binary Interface''. | *Specyfikacje ''Application Binary Interface''. |
Wersja z 09:54, 21 cze 2006
Autor sylabusa
mgr inż. Grzegorz Mazur
g.mazur@ii.pw.edu.pl
Nazwa zajęć
Programowanie niskopoziomowe
Forma zajęć
wykład (15h) + laboratorium (15h)
Opis
Celem przedmiotu jest zapoznanie słuchaczy z zasadami programowania asemblerowego i hybrydowego oraz z narzędziami do tego służącymi. Treść wykładu obejmuje niezbędne podstawy teoretyczne, w tym opis środowiska pracy programu, zapoznanie z oprogramowaniem narzędziowym (asembler, kompilator C, konsolidator) oraz zasady programowania asemblerowego i hybrydowego. Zajęcia projektowe mają na celu stworzenie przez studenta kilku programów asemblerowych i hybrydowych i praktyczne zapoznanie z zagadnieniami omawianymi w trakcie wykładu. Wykład jest silnie skorelowany z przedmiotem Architektura Komputerów.
Wymagania wstępne
Programowanie w języku C
Architektura komputerów (może być równolegle)
Sylabus
- Wprowadzenie - zastosowanie programowania asemblerowego i hybrydowego, środowisko pracy programu w systemie operacyjnym i bez niego.
- Programowanie asemblerowe w środowisku systemu operacyjnego - sekcje, deklaracje danych, ładowanie i start programu, korzystanie z funkcji systemowych.
- Proces tworzenia programu - kompilacja, łączenie. Oprogramowanie narzędziowe - kompilator, asembler, konsolidator. Biblioteki. Tworzenie programu wielomodułowego.
- Wywoływanie procedur. Konwencje wołania. Standardy ABI - analiza kilku wybranych konwencji dla procesorów RISC (MIPS, ARM) i CISC (x86, AMD64). Tworzenie oprogramowania hybrydowego.
- Techniki programowania asemblerowego. Metody optymalizacji kodu możliwe do realizacji wyłącznie na poziomie asemblera. Błędy i złe nawyki w programowaniu asemblerowym.
- Zasady optymalizacji programu pod kątem redukcji opóźnień i wykorzystania równoczesności wykonania instrukcji w procesorach superskalarnych.
- Wprowadzenie do programowania jednostek wektorowych.
Literatura
- J. Biernat. Arytmetyka komputerów. PWN, 1996.
- Materiały firmowe - dokumenty techniczne dostępne w sieci www - MIPS, Intel, AMD.
- Specyfikacje Application Binary Interface.