PPS 2015 W1


Podstawy programowania
systemowego
Dr inż. Zbigniew Lach
konsultacje: wtorek, 10:15-11:00
środa, 12:15-13:00
Projektowanie systemu komputerowego
Planowanie produktu
Projekt. systemu
Projektowanie sprzętu
Projekt. programu
Zgodność z założeniami?
STOP
System komputerowy
Programowanie systemowe = rodzaj programowania
systemów oprogramowania
oprogramowanie systemowe
" realizuje funkcje konieczne dla działania systemu
komputerowego (świadczy usługi sprzętowi
komputerowemu)
" w szczególności: steruje i koordynuje pracę
komputera zapewniając jego funkcjonalność, zwłaszcza
możliwość wykonywania programów aplikacyjnych
" w skład o.s. wchodzi każde oprogramowanie, z
którym użytkownik nie ma bezpośredniej styczności
" pojęcie szersze niż systemy operacyjne
Specyfika:
Programista uwzględnia i aktywnie wykorzystuje cechy
sprzętu i inne właściwości systemu, na którym program
jest uruchomiony
o język niskiego poziomu
o środowisko o limitowanych zasobach
o bezpośredni i surowy dostęp do pamięci i kontroli
wykonania
o ma małą bibliotekę uruchomieniową (albo wcale)
ą Program systemowy powinien być bardzo
efektywny i mieć małe narzuty uruchomieniowe
Program wykładu
Język asemblera; cechy i mechanizmy asemblera
Implementacja struktur sterowania programem
Implementacja działań arytmetycznych i logicznych
Programowanie proceduralne
Obsługa wejścia wyjścia
Programowanie systemu przerwań
Programy relokowalne
Programowanie modułowe
Elementy sterowania procesami
Literatura podstawowa:
1. W. Stanisławski, D. Raczyński  Programowanie
systemowe mikroprocesorów rodziny x86 , PWN
Warszawa 2010
2. A. Silberschatz. P.B. Galwin, "Podstawy systemów
operacyjnych", WNT Warszawa 2000
3. Gary Syck, "Turbo Assembler. Biblia użytkownika"
LT&P, Warszawa 1994
4. W. Stallings, "Organizacja i architektura systemu
komputerowego", WNT, Warszawa 2000
Zaliczenie przedmiotu: min. 50% punktów z dwóch
kolokwiów:
(I) 16 kwietnia
(II) 18 czerwca
Wykład 1
Podstawowe mechanizmy języka
asemblera
Język asemblera
" Niskopoziomowy język
programowania związany
z konkretnym procesorem
ściśle odpowiadający
zestawowi instrukcji
języka maszynowego
" Każda instrukcja ASM
odpowiada dokładnie
jednej instrukcji ML
Język asemblera
Poziom Opis
Asembler (ASM) Stosuje mnemoniki instrukcji
bezpośrednio odpowiadające
rozkazom języka maszynowego
Język Maszynowy (ML) Instrukcje numeryczne i
operandy, które mogą być
umieszczone w pamięci
komputera i bezpośrednio
wykonywane przez procesor
Formalizm języka ASM
symbolicznie zakodowane
instrukcje procesora
symbolicznie zakodowana instrukcja
procesora (MNEMONIK)
symbolicznie zakodowany argument
instrukcji (ETYKIETA)
HLL i ASM w kontekście programowania systemowego
Typ zastosowań HLL ASM
Oprogramowanie Struktury Brak struktur
ogólnego formalne języków formalnych
przeznaczenia na ułatwiają
jedną platformę zorganizowanie
komputerową programu
Oprogramowanie Przenośne Trudne do
ogólnego wykonania
przeznaczenia na
wiele platform
komputerowych
HLL i ASM w kontekście programowania systemowego
Typ zastosowań HLL ASM
Sterownik Złożone techniki Dostęp do
urządzenia programowania hardware u
bezpośredni i
prosty
Systemy Dają w wyniku Odpowiedni,
wbudowane, gry zbyt długie ponieważ program
wymagające programy maszynowy jest
bezpośredniego maszynowe; krótki i może być
dostępu do mogą być wykonywany
urządzeń nieefektywne szybko
HLL i ASM w kontekście programowania systemowego
Specyfika użycia ASM do programowania
" Zwiększenie szybkości aplikacji
 bezpośredni dostęp do hardware u (np.: bezpośredni
dostęp do portów zamiast wywołania systemowego)
 dobry program ASM jest szybszy i zajmuje mniej
miejsca (krytyczne fragmenty programu w ASM)
" Ograniczenia
 Bardzo szybkie i zwarte lecz przystosowane tylko do
jednego typu procesora
Formalizm języka ASM
Język asemblera - sposób przedstawiania programu
tak, aby był on zrozumiały dla asemblera (bliski
językowi maszynowemu  mały nakład pracy przy
tłumaczeniu)
Język asemblera jest strukturą sformalizowaną.
Rządzą nim:
reguły leksykalne (znaczeniowe)
reguły składni
Formalizm języka ASM
W języku asemblera:
- program składa się z oddzielnych wierszy
- w jednym wierszu umieszcza się jedno polecenie
- instrukcja mikroprocesora
- dyrektywa asemblera
- opcjonalnie komentarz
Formalna składnia języka asemblera
Formalizm języka ASM
Język asemblera typowo rozróżnia nstępujące
jednostki leksykalne :
-program
-wiersz
-instrukcja
-operand
Formalizm języka ASM
::= |
- program jest ciągiem 1 lub wielu wierszy
::= | | |
- wiersz zawiera definicję, polecenie lub komentarz
::= =
- definicja jest symbolem po którym następuje znak przypisania oraz
operand
::= |
|
- etykieta i instrukcja są w poleceniu opcjonalne
::= :
- etykieta jest symbolem po którym umieszczono dwukropek
Formalizm języka ASM
::= |
- operand jest opcjonalny w instrukcji
::= ; |
- komentarz przed końcem linii jest opcjonalny
::= ADD | ADDC | SUB | SUBC | ... | DJNZ
- rozkazami są: ADD,ADDC,SUB,SUBC,...,DJNZ (mnemoniki)
::= DB | ... | ORG
- dyrektywami są: DB,...,ORG
::= |
- operand jest symbolem lub liczbą
::= ...
::= ...
::= |
::= |
Formalizm języka ASM
symbolicznie zakodowane
instrukcje procesora
symbolicznie zakodowana instrukcja
procesora (MNEMONIK)
symbolicznie zakodowany argument
instrukcji (ETYKIETA)
Cechy języka ASM
ML a w konsekwencji ASM  nie posiada mechanizmów
charakterystycznych dla HLL:
" złożonych konstrukcji sterowania programem (FOR,
WHILE, SWITCH)
" realizacji bloków programu, w tym lokalności
zmiennych
" relokacji programu
" modułowej budowy programu
" & i wielu innych
realizacja takich mechanizmów przeniesiona na
programistę
możliwe wspomaganie użyciem zaawansowanych
mechanizmów asemblera
Cechy zaawansowanego ASM
Rozwiązanie problemu wpływu ograniczeń ML na
cechy ASM
" Wprowadzenie do języka ASM
dyrektyw
-polecenia dla asemblera
-predefiniowane konstrukcje
" Zastosowanie preprocesingu
Dyrektywy ASM
Dyrektywy asemblera
" nie odpowiadają instrukcjom ML
" nie są tłumaczone na ML
" służą do sterowania pracą asemblera.
Przykłady dyrektyw:
- ORG
- ABS, REL
- IF, ENDIF
- DB, DW
Dyrektywy, podobnie jak mnemoniki, posiadają przypisane zwykle
kilkuznakowe symbole
Dyrektywy ASM
Dyrektywy między innymi służą do:
" nadawania adresu początkowego kodowi
maszynowemu linii programu
" oznaczenia początku segmentu, który ma być
tłumaczony na postać relokowalną
" sterowania wykonaniem asemblacji
" zarezerwowania obszaru w pamięci i przypisaniu
wartości poszczególnym bajtom
" są identyfikatorami predefiniowanej konstrukcji
programowej
Dyrektywy ASM
Rozkazy dla asemblera.
Wykonywane przez asembler, nie
tłumaczone na ML.
Mogą wpływać na wynikowy
kod, tablicę symboli, plik listingu,
wewnętrzne parametry
asemblera.
Funkcje dyrektyw ASM
Funkcje dyrektyw ASM
Dyrektywy ASM  asemblacja warunkowa
" Polecenia sterujące asemblacją (wykonywane w
czasie asemblacji)
 IF-ELSE-ENDIF (IFE, IFDEF, IFNDEF...)
 Jeden program  wiele wariantów generacja
innego kodu w zależności od  otoczenia
" np. pliku zródłowym zdefiniowano parametr=typ
procesora
Dyrektywy ASM  asemblacja warunkowa
Przykład:
Makroinstrukcje w ASM
Makroinstrukcja  symbol, któremu przypisano fragment
tekstu programu (w definicji makroinstrukcji)
Gdziekolwiek w pliku zródłowym znajdzie się symbol
zdefiniowanego wcześniej makra, asembler wpisze w jego
Gdziekolwiek w pliku zródłowym znajdzie się symbol
miejsce w pliku zródłowym tekst przypisany do makra
zdef(makro = zmienna asemblera, która może być używana
iniowanego wcześniej makra, asembler wpisze w jego
miejsce w pliku zródłowym tekst przypisany do makra (makro
jako  skrót przypisanego jej tekstu)
= zmienna asemblera, która może być używana jako  skrót
przypisanego jej tekstu)
Makroinstrukcje w ASM
Przetwarzanie programu (preprocesing)
Program zródłowy
Przetwarzanie makro
Definicja
Makro procesor
 wklej
Program rozwinięty
Makrodefinicje
Asembler
" Rozpoznaj definicje
" Zachowaj definicje
" Rozpoznaj wywołania makro
" Rozwiń wywołania makro
Kod wynikowy
Makroinstrukcje w ASM
Gdziekolwiek w pliku zródłowym znajdzie się symbol
zdefinioKorzyści stosowania makroinstrukcji:
" Redukuje liczbę błędów powodowanych przez programistę.
" Umożliwia zdefiniowanie często używanych w programie
sekwencji instrukcji.
" Wielokrotne użycie tego makra w tekście programu
zródłowego każdorazowo zapewni ten sam rezultat
" Skraca się czas przygotowania programu zródłowego, a
program zyskuje na przejrzystości.
" Symbole (etykiety) użyte w makro są lokalne w obrębie
makro i nie są mylone przez asembler z identycznymi
symbolami używanymi poza nim.
Makroinstrukcje w ASM
ADD_AB_R0R1 MACRO
CLC ; zeruj bit przeniesienia
ADD A,R0 ; dodaj młodsze bajty
ADDC B,R1 ; dod. starsze bajty z uwzględnieniem przen.
ENDM ; koniec makro
Przykład definicji makra
Problemy makro
" Sposób definiowania makro
" Zastępowanie parametrów
" Lokalność symboli
" Rozwinięcia powtarzane
Rozwijanie makro
Program zródłowy
Program rozwinięty
STRG MACRO
.
MOV AX, BX
.
MOV BX, AX
NOP
MOV AX, BX
ENDM
MOV BX, AX
{
.
NOP
STRG
.
. MOV AX, BX
STRG
MOV BX, AX
{
.
NOP .
.
Makrodefinicje zagnieżdżone
Przetwarzanie makrodefinicji w trakcie rozwijania
MACROS MACRO
ENDM
........
ENDM
RDBUFF
........
........
ENDM
WRBUFF
........
Zastępowanie parametrów makro
Program zródłowy
Program rozwinięty
STRG MACRO DST, SRC
.
MOV AX, SRC
.
MOV DST, AX
MOV AX, DATA1
NOP
MOV DATA2, AX
{
ENDM
NOP
.
MOV AX, DATA4
STRG DATA1, DATA2
MOV DATA5, AX
. {
NOP
STRG DATA4, DATA5
Lokalność symboli makro
" Podstawowy asembler  brak symboli lokalnych
" Makroasembler  jeżeli kopiowałby tekst zródłowy
bez zmian symbole w tekście makrodefinicji nie
byłyby lokalne
" Symbole lokalne - makroprocesor nadaje unikalne
nazwy w czasie wstawiania tekstu makrodefinicji do
programu
 Np. STRG MACRO
X1 EQU 10H STRG_1_X1 EQU 10H
Makro   wywołania powtarzane
Dyrektywy FOR, REPEAT, WHILE
Efekt użycia: skrócenie tekstu programu:
FOR parametr,
tekst makro
Parametr w tekście  zastąpiony
ENDM
kolejnym argumentem z listy
REPEAT wyrażenie
tekst makro
Powtórz makro  wartość
ENDM
wyrażenia razy
Makro   wywołania powtarzane
Dyrektywy FOR, REPEAT, WHILE
Efekt użycia: skrócenie tekstu programu:
WHILE wyrażenie
tekst makro
ENDM
Powtarzaj tekst makro kiedy wyrażenie
= TRUE (modyfikacja w makro!)
Makro a wywołanie procedury
WRBUFF
RDBUFF
Main
RDREC
WRREC
Makro
Main
WRREC
Np. 2-
krotne
RDREC
EXPAND
wywołanie
&
WRREC
190a RDBUFF
190m
210a
WRBUFF
Ten sam 210h
Wywołanie procedury;
220a
tekst
WRBUFF
użycie stosu
220h
wielokrotnie
Main
Cechy makroinstrukcji
Mechanizm  przekazywania parametrów i lokalność
wewnętrznych symboli makroinstrukcja może
służyć jako metoda implementacji bloków programu
Wada rozwiązania: mechanizm statyczny  bloki mają
charakter statyczny, ustalona postać na etapie
generacji programu zródłowego
Algorytm jednoprzejściowego makroprocesora
GETLINE
macro
Następny wiersz
&
PROCESSLINE
PROCESSLINE
GETLINE
jest
jest
PROCESSLINE
makrowywołanie
makro
EXPAND
NAMTAB
DEFTAB
Kopiuj
DEFINE
tekst
Kopiuj
RDBUFF
rozwinięcia,
definicję
substytucja
RDBUFF
makro z
ARGTAB
pliku
WRBUFF
zródłowego
WRBUFF
makrodefinicja
makrodefinicja z
nazwa makro do DEFTAB
do DEFTAB
NAMTAB


Wyszukiwarka

Podobne podstrony:
PPS 13 W1
PPS 15 W2
PPS W1
ASEUT 15 2016 MGR S1 PODSTAWOWE OBIEKTY REGULACJI W INSTALACJACH HYDRAULICZNYCH UCZ W1
15 3
15
Program wykładu Fizyka II 14 15
15 zabtechnŁódzkiego z
311[15] Z1 01 Wykonywanie pomiarów warsztatowych
KEM w1

więcej podobnych podstron