PPS 2015 W1

background image

Podstawy programowania

systemowego

Dr inż. Zbigniew Lach

konsultacje: wtorek, 10:15-11:00

środa, 12:15-13:00

background image

Planowanie produktu

Projekt. systemu

Projektowanie sprzętu

Projekt. programu

Zgodność z założeniami?

STOP

Projektowanie systemu komputerowego

background image

System komputerowy

background image

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

Programowanie systemowe

= rodzaj programowania

systemów oprogramowania

background image

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

background image

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

Program wykładu

background image

Zaliczenie przedmiotu: min. 50% punktów z dwóch
kolokwiów:

(I) 16 kwietnia

(II) 18 czerwca

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

background image

Wykład 1

Podstawowe mechanizmy języka

asemblera

background image

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

background image

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

Język asemblera

background image

Formalizm języka ASM

symbolicznie zakodowane

instrukcje procesora

symbolicznie zakodowany argument

instrukcji (ETYKIETA)

symbolicznie zakodowana instrukcja

procesora (MNEMONIK)

background image

Typ

zastosowań

HLL

ASM

Oprogramowanie
ogólnego
przeznaczenia na
jedną platformę
komputerową

Struktury
formalne języków
ułatwiają
zorganizowanie
programu

Brak struktur
formalnych

Oprogramowanie
ogólnego
przeznaczenia na
wiele platform
komputerowych

Przenośne

Trudne do
wykonania

HLL i ASM w kontekście programowania systemowego

background image

Typ

zastosowań

HLL

ASM

Sterownik
urządzenia

Złożone techniki
programowania

Dostęp do
hardware’u
bezpośredni i
prosty

Systemy
wbudowane, gry
wymagające
bezpośredniego
dostępu do
urządzeń

Dają w wyniku
zbyt długie
programy
maszynowe;
mogą być
nieefektywne

Odpowiedni,
ponieważ program
maszynowy jest
krótki i może być
wykonywany
szybko

HLL i ASM w kontekście programowania systemowego

background image

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

HLL i ASM w kontekście programowania systemowego

background image

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

background image

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

background image

Język asemblera typowo rozróżnia nstępujące

jednostki leksykalne :

Formalizm języka ASM

-program

-wiersz

-instrukcja

-operand

background image

<program> ::= <wiersz> <koniec pliku > | <wiersz> <program>

-

program jest ciągiem 1 lub wielu wierszy

<wiersz> ::= <definicja> | <dyrektywa> | <polecenie> | <komentarz>

-

wiersz zawiera definicję, polecenie lub komentarz

<definicja> ::= <symbol >

=

<operand> <komentarz>

-

definicja jest symbolem po którym następuje znak przypisania oraz

operand

<polecenie> ::= <etykieta> <instrukcja> <komentarz> | <instrukcja>
<komentarz> | <komentarz>

-

etykieta i instrukcja są w poleceniu opcjonalne

<etykieta> ::= <symbol> :

-

etykieta jest symbolem po którym umieszczono dwukropek

Formalizm języka ASM

background image

<instrukcja> ::= <rozkaz> <operand> | <rozkaz>

- operand jest opcjonalny w instrukcji

<komentarz> ::=

;

<tekst> <koniec linii> | <koniec linii>

-

komentarz przed końcem linii jest opcjonalny

<rozkaz> ::= ADD | ADDC | SUB | SUBC | ... | DJNZ

-

rozkazami są: ADD,ADDC,SUB,SUBC,...,DJNZ (

mnemoniki

)

<dyrektywa> ::= DB | ... | ORG

-

dyrektywami są: DB,...,ORG

<operand> ::= <symbol > | <liczba>

-

operand jest symbolem lub liczbą

<tekst>::= <znak alfanumeryczny> ... <znak alfanumeryczny>
<symbol>::= <litera> <znak alfanumeryczny> ...<znak alfanumeryczny>
<znak alfanumeryczny>::=<litera> | <cyfra>
<liczba>::=<cyfra> | <cyfra>

Formalizm języka ASM

background image

Formalizm języka ASM

symbolicznie zakodowane

instrukcje procesora

symbolicznie zakodowany argument

instrukcji (ETYKIETA)

symbolicznie zakodowana instrukcja

procesora (MNEMONIK)

background image

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ę

m

ożliwe wspomaganie użyciem zaawansowanych

mechanizmów asemblera

background image

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

background image

Dyrektywy asemblera
nie odpowiadają instrukcjom ML
nie są tłumaczone na ML
służą do sterowania pracą asemblera.

-

ORG

-

ABS, REL

-

IF, ENDIF

-

DB, DW

Dyrektywy ASM

Przykłady dyrektyw:

Dyrektywy, podobnie jak mnemoniki, posiadają przypisane zwykle
kilkuznakowe symbole

background image

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

background image

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.

background image

Funkcje dyrektyw ASM

background image

Funkcje dyrektyw ASM

background image

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 źródłowym zdefiniowano parametr=typ

procesora

Dyrektywy ASM – asemblacja warunkowa

background image

Przykład:

Dyrektywy ASM – asemblacja warunkowa

background image

Makroinstrukcja – symbol, któremu przypisano fragment

tekstu programu (w definicji makroinstrukcji)


Gdziekolwiek w pliku źródłowym znajdzie się symbol

zdefiniowanego wcześniej makra, asembler wpisze w jego

miejsce w pliku źródłowym tekst przypisany do makra

(makro = zmienna asemblera, która może być używana

jako “skrót” przypisanego jej tekstu)

Gdziekolwiek w pliku źródłowym znajdzie się symbol

zdefiniowanego wcześniej makra, asembler wpisze w jego

miejsce w pliku źródłowym tekst przypisany do makra (makro

= zmienna asemblera, która może być używana jako “skrót”
przypisanego jej tekstu)

Makroinstrukcje w ASM

background image

Makroinstrukcje w ASM

background image

Program źródłowy

Makro procesor

Asembler

Kod wynikowy



Makrodefinicje

Przetwarzanie makro

Definicja

„wklej”

Program rozwinięty

Rozpoznaj definicje

Zachowaj definicje

Rozpoznaj wywołania makro

Rozwiń wywołania makro

Przetwarzanie programu (preprocesing)

background image

Gdziekolwiek w pliku źródłowym znajdzie się symbol

zdefinio

Korzyś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

źródłowego

każdorazowo zapewni ten sam rezultat

Skraca się czas przygotowania

programu źró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

background image

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

Makroinstrukcje w ASM

background image

Sposób definiowania makro
Zastępowanie parametrów
Lokalność symboli
Rozwinięcia powtarzane

Problemy makro

background image

Program źródłowy

STRG

MACRO

MOV AX, BX

MOV BX, AX

NOP

ENDM

.

STRG

.

STRG

.

.

Program rozwinięty

.

.

MOV AX, BX

MOV BX, AX

NOP

.

MOV AX, BX

MOV BX, AX

NOP

.

{
{

Rozwijanie makro

background image

Przetwarzanie makrodefinicji w trakcie rozwijania

ENDM

ENDM

ENDM

........

RDBUFF

........
........

WRBUFF

........

MACROS MACRO

Makrodefinicje zagnieżdżone

background image

Program źródłowy

STRG

MACRO

DST, SRC

MOV AX,

SRC

MOV

DST

, AX

NOP

ENDM

.
STRG

DATA1, DATA2

.
STRG

DATA4, DATA5

Program rozwinięty

.

.

MOV AX,

DATA1

MOV

DATA2

, AX

NOP

MOV AX,

DATA4

MOV

DATA5

, AX

NOP

{
{

Zastępowanie parametrów makro

background image

Podstawowy asembler – brak symboli lokalnych

Makroasembler

– jeżeli kopiowałby tekst źró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

Lokalność symboli makro

background image

Dyrektywy

FOR, REPEAT, WHILE


Efekt użycia: skrócenie tekstu programu:

FOR

parametr, <argument [,argument]...>

tekst makro

ENDM

REPEAT

wyrażenie

tekst makro

ENDM

Powtórz makro „wartość
wyrażenia” razy

Parametr w tekście – zastąpiony
kolejnym argumentem z listy

Makro – „wywołania” powtarzane

background image

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 – „wywołania” powtarzane

background image

Makro a wywołanie procedury



WRREC


RDREC

Np. 2-
krotne

wywołanie

EXPAND



Main

RDBUFF

190a

190m

WRBUFF

210a

210h

WRBUFF

220a

220h

Wywołanie procedury;
użycie stosu

Makro

Main

RDBUFF

WRBUFF

Ten sam
tekst

wielokrotnie

RDREC

WRREC

WRREC

Main

background image

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

źródłowego

background image

macro

GETLINE

PROCESSLINE

GETLINE

Następny wiersz

PROCESSLINE

jest

makro

ARGTAB




NAMTAB

nazwa makro do
NAMTAB

Algorytm jednoprzejściowego makroprocesora

DEFINE

Kopiuj
definicję

makro z
pliku
źródłowego

EXPAND

Kopiuj
tekst

rozwinięcia,
substytucja

PROCESSLINE

jest

makrowywołanie

RDBUFF

DEFTAB

RDBUFF

makrodefinicja
do DEFTAB

WRBUFF

WRBUFF

makrodefinicja z
DEFTAB


Wyszukiwarka

Podobne podstrony:
PPS 2015 W2
PPS 2015 W3
chirurgia koni egzamin 2015 w1
ASEUT 2015 2016 MGR S1 PODSTAWOWE OBIEKTY REGULACJI W INSTALACJACH HYDRAULICZNYCH UCZ W1
PPS W1
Farmakologia pokazy, Podstawy Farmakologii Ogólnej (W1)
W1 wprow
Przygotowanie PRODUKCJI 2009 w1
Plan pracy na 2011 pps
w1 czym jest psychologia
Wyklad 04 2014 2015
Zimne piwo pps
PD W1 Wprowadzenie do PD(2010 10 02) 1 1

więcej podobnych podstron