programowanie niskopoziomowe id Nieznany

background image

1

Programowanie

niskopoziomowe

dr inż. Paweł Pełczyński

ppelczynski@swspiz.pl

background image

2

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/

background image

3

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.

background image

4

Uzasadnienie potrzeby

programowania

niskopoziomowego

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

background image

5

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

background image

6

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)

background image

7

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.

background image

8

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.

background image

9

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.

background image

10

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.

background image

11

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.

background image

12

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

background image

13

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

background image

14

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

background image

15

Asembler - cechy



Mnemoniczne nazwy operacji



Operowanie symbolicznymi nazwami adresów danych i
etykiet



Możliwość stosowania makrooperacji



Możliwość łatwiejszego modyfikowania programu

background image

16

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.

background image

17

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
...

background image

18

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.

background image

19

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


Wyszukiwarka

Podobne podstrony:
Podstawy programowania 1 W2 id Nieznany
narodowy program zdrowia 2 id 3 Nieznany
cw 2 programowanie procesu id 1 Nieznany
Program socjoterapeutyczny id 3 Nieznany
MOO programowanie kwadratowe id Nieznany
podstawy programowania java id Nieznany
Jezyki programowania robotow id Nieznany
FANUC podstawy programowania id Nieznany
Program umiarkowany id 395519 Nieznany
Narodowy Program Zdrowia1 id 31 Nieznany
program praktyk informatyka id Nieznany
Narodowy Program Zdrowia id 314 Nieznany
Program cw3 id 395618 Nieznany
Programowanie GUI id 395885 Nieznany
Program zjazdu id 395614 Nieznany
Program cw2 id 395617 Nieznany
programowanie st7 2011 03 14 id Nieznany

więcej podobnych podstron