Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl



Podobne dokumenty
Opis efektów kształcenia dla modułu zajęć

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Podstawy programowania

Mikrokontroler ATmega32. Język symboliczny

Programowanie niskopoziomowe

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C1

Techniki mikroprocesorowe i systemy wbudowane

Technika mikroprocesorowa. Języki programowania mikrokontrolerów

Programowanie niskopoziomowe

Programowanie Niskopoziomowe

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Systemy wbudowane. Paweł Pełczyński

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Podstawy Informatyki Języki programowania c.d.

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C2. Low Level Programming Informatyka

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

PRZEWODNIK PO PRZEDMIOCIE

Wstęp Architektura... 13

Podstawy Informatyki Języki programowania

Historia modeli programowania

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

MIKROKONTROLERY I MIKROPROCESORY

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Systemy na Chipie. Robert Czerwiński

Technologie informacyjne - wykład 12 -

Programowanie komputerów

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wykład 4. Środowisko programistyczne

Podstawy Informatyki Systemy sterowane przepływem argumentów

Architektura mikroprocesorów TEO 2009/2010

Rejestr HKEY_LOCAL_MACHINE

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Systemy Wbudowane. Założenia i cele przedmiotu: Określenie przedmiotów wprowadzających wraz z wymaganiami wstępnymi: Opis form zajęć

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Logiczny model komputera i działanie procesora. Część 1.

PRZEWODNIK PO PRZEDMIOCIE

Wykład 1

Język programowania: Lista instrukcji (IL Instruction List)

Metody Kompilacji Wykład 1 Wstęp

Opracował: Jan Front

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Komputerowe systemy pomiarowe. Dr Zbigniew Kozioł - wykład Mgr Mariusz Woźny - laboratorium

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Podstawy programowania wykład

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Mechatronika i inteligentne systemy produkcyjne. Paweł Pełczyński ppelczynski@swspiz.pl

Systemy wbudowane. Przykłady kodu Assembler

ARCHITEKTURA PROCESORA,

2. Architektura mikrokontrolerów PIC16F8x... 13

Programowanie w C. dr inż. Stanisław Wszelak

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Działanie systemu operacyjnego

Tworzenie oprogramowania

Działanie systemu operacyjnego

Wykład I. Wprowadzenie do baz danych

Wstęp do Informatyki. Klasyfikacja oprogramowania

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Budowa i zasada działania komputera. dr Artur Bartoszewski

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

KARTA PRZEDMIOTU. 2. Kod przedmiotu: MK_ Nazwa przedmiotu: SYSTEMY MIKROPROCESOROWE I WBUDOWANE

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

imei Instytut Metrologii, Elektroniki i Informatyki

Rok akademicki: 2013/2014 Kod: EEL s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Procesory sygnałowe Digital Signal Processors. Informatyka II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Programowanie niskopoziomowe

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Rok akademicki: 2014/2015 Kod: CCB s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Co to jest system wbudowany?

Architektura systemów komputerowych. Przetwarzanie potokowe I

Działanie systemu operacyjnego

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

1.Wstęp. 2.Generowanie systemu w EDK


Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

Działanie systemu operacyjnego

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

WPROWADZENIE Mikrosterownik mikrokontrolery

Komputery przemysłowe i systemy wbudowane

Architektura komputerów

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

PRZEWODNIK PO PRZEDMIOCIE

Architektura systemów komputerowych. dr Artur Bartoszewski

Transkrypt:

Programowanie niskopoziomowe dr inż. Paweł Pełczyński ppelczynski@swspiz.pl 1

Literatura Randall Hyde: Asembler. Sztuka programowania, Helion, 2004. Eugeniusz Wróbel: Praktyczny kurs asemblera, Helion, 2004. W prezentacji wykorzystano zdjęcia ze stron: http://pl.wikipedia.org http://www.dis.uniroma1.it/~iocchi/stereo/ 2

Cechy programowania niskopoziomowego Programowanie niskopoziomowe wymaga od programisty znajomości sprzętu, w szczególności architektury mikroprocesora. Programy są pisane w języku pozwalającym na bezpośrednie odwołania do rejestrów mikroprocesora, portów I/O i pamięci systemu zazwyczaj jest to asembler. Programowanie w języku niskiego poziomu wymaga doświadczenia, jest czasochłonne i narażone na błędy. 3

Uzasadnienie potrzeby programowania niskopoziomowego Programowanie niskopoziomowe pozwala na najdalej idącą optymalizację kodu pod względem szybkości wykonania lub objętości programu. 4

Zastosowania programowania niskopoziomowego Tworzenie sterowników i programów startowych Pisanie elementów jądra systemu operacyjnego Pisanie programów dla mikrokontrolerów o bardzo ograniczonych zasobach Tworzenie silnie zoptymalizowanych aplikacji dla tzw. systemów wbudowanych Realizacja wydajnych aplikacji dla systemów przetwarzania sygnałów i obrazów (DSP) Programowanie procesorów wektorowych, np. GPU 5

Zastosowania programowania niskopoziomowego Tworzenie sterowników i programów startowych Przykładem takiego oprogramowania jest system BIOS umieszczony w pamięci nieulotnej płyty głównej komputera PC. Jego zadaniem jest: konfiguracja i inicjalizacja pracy układów wchodzących w skład systemu załadowanie do pamięci i uruchomienie programu ładującego system operacyjny utworzenie programowej abstrakcji sprzętu, pozwalającej na ujednolicone odwołania aplikacji programowych do urządzeń, niezależnie od ich budowy (funkcje i przerwania BIOSu) 6

Zastosowania programowania niskopoziomowego Pisanie programów dla mikrokontrolerów o bardzo ograniczonych zasobach Mikrokontrolery są jednoukładowymi komputerami, często stosowanymi do sterowania sprzętem elektronicznym powszechnego użytku. Ze względu na wymaganie małego kosztu ich zasoby są silnie ograniczone, co wymaga tworzenia wysoce zoptymalizowanych aplikacji programowych. Wysoki koszt tworzenia aplikacji w języku niskopoziomowym jest uzasadniony produkcją wielkoseryjną sprzętu. 7

Zastosowania programowania niskopoziomowego Tworzenie silnie zoptymalizowanych aplikacji dla tzw. systemów wbudowanych Podobnie, jak poprzednio, wysoki koszt tworzenia aplikacji w języku niskopoziomowym jest uzasadniony produkcją wielkoseryjną sprzętu. 8

Zastosowania programowania niskopoziomowego Realizacja wydajnych aplikacji dla systemów przetwarzania sygnałów i obrazów (DSP) Niektóre aplikacje wymagają dużej mocy obliczeniowej, by mogły realizować postawione zadania w czasie rzeczywistym. Osiąga się to przez zastosowanie specjalizowanych procesorów sygnałowych (DSP) oprogramowanych w asemblerze. 9

Zastosowania programowania niskopoziomowego Programowanie procesorów wektorowych, np. GPU Programowanie procesorów wektorowych, np. procesorów graficznych, wymaga specyficznego podejścia, ze względu ma możliwość przetwarzania wielu danych w jednej instrukcji. W tym celu zostały opracowane specjalizowane języki niskiego poziomu. 10

Języki programowania niskopoziomowego Pierwsza generacja - Język wewnętrzny (maszynowy). Druga generacja - Język symboliczny (asembler). Języki symboliczne wysokiego poziomu pozwalające na operowanie na fizycznych rejestrach, portach i pamięci komputera, posiadają cechy języków niskiego poziomu pozwalają na tworzenie programów o podobnej funkcjonalności. 11

Język wewnętrzny Język wewnętrzny (maszynowy) jest definiowany operacjami realizowanymi przez mikroprocesor Lista instrukcji jest zbiorem wszystkich operacji wykonywanych przez mikroprocesor Odpowiednio uporządkowany ciąg instrukcji stanowi program kod maszynowy 12

Język wewnętrzny - wady Reprezentacja instrukcji za pomocą kodów liczbowych Trudne tworzenie i poprawianie programu Wymagana jest dobra znajomość danej platformy sprzętowej 13

Język symboliczny - asembler Asemblery są językami powstałymi na bazie języka maszynowego danego mikroprocesora przez zastąpienie kodów instrukcji nazwami symbolicznymi mnemonikami Asembler jest językiem niskiego poziomu, jedno polecenie asemblera odpowiada zazwyczaj jednemu rozkazowi mikroprocesora 14

Asembler - cechy Mnemoniczne nazwy operacji Operowanie symbolicznymi nazwami adresów danych i etykiet Możliwość stosowania makrooperacji Możliwość łatwiejszego modyfikowania programu 15

Asembler składnia linii programu [etykieta:] [instrukcja [argument1 [, argument2...]]][; komentarz] Etykieta jest symboliczną nazwą adresu instrukcji Przykład: laduj: mov ax, $20A4 ; załaduj do rejestru ax daną szesnastkową 20A4 Program napisany w języku asemblera wymaga asemblacji przetłumaczenia na kod maszynowy. Program tłumaczący jest także nazywany asemblerem. 16

Asembler makrooperacje Często powtarzający się ciąg instrukcji można zastąpić tzw. makroopperacją Makrooperację definiuje się przez umieszczenie ciągu instrukcji między poleceniami: macro nazwa i endm Przykład: macro mnoz_int x, y mov ax, x ; załaduj do rejestru ax pierwszą daną mov bx, y ; załaduj do rejestru ax drugą daną imul; endm... mnoz_int a, b ; makro użyte w programie... 17

Program tłumaczący - translator Kompilator języka symbolicznego (asemblera) tłumaczy program na kod maszynowy Proces kompilacji jest tutaj nazywany asemblacją, a sam kompilator asemblerem. 18

Cechy Języka C B.Kernighan, D. Ritchie 1971 Język C jest językiem względnie niskopoziomowym wśród języków strukturalnych. Posiada następujące cechy: Nie sprawdza rozmiaru pamięci przydzielonej na tablice Pozwala alokować pamięć, nie podając typu danych w niej przechowywanych Pozwala na manipulację portami komputera na niskim poziomie Ze względu na te cechy został zastosowany do napisania elementów systemu operacyjnego UNIX 19