PPS W6

background image

Wykład 6

Wsparcie makroasemblera dla budowy

blokowej

background image

Bloki programu

Mechanizmy organizuj

ą

ce bloki

Działanie asemblera/loadera/linkera

Organizowanie bloków w procesorach z segmentacj

ą

background image

Metoda organizowania pami

ę

ci odpowiadaj

ą

ca sposobowi

korzystania z pami

ę

ci przez programist

ę

program jest zestawem bloków (segmentów). Blok jest
jednostk

ą

logiczn

ą

:

program główny
procedura/y
funkcja/e
obiekt/y
zmienne lokalne
zmienne globalne
blok wspólny
stos
tablice

Segmenty programu

łatwiej zapewni

ć

współdzielenie kodu i

ochron

ę

danych

background image

1

3

2

4

1

4

2

3

przestrze

ń

„u

ż

ytkownika”

fizyczna przestrze

ń

pami

ę

ci

Segmenty/bloki programu

background image

Segmenty/bloki programu

background image

Współdzielenie segmentów/bloków programu

Bity dost

ę

pu przypisane

do segmentów – ochrona
i współdzielenie na
poziomie segmentów

background image

blok 0

blok 1

blok 2

blok 0

blok 1

blok 2

program

ź

ródłowy

blok 0

blok 1

blok 2

bloki programu

Bloki programu

Odnosz

ą

si

ę

do fragmentów programu, które mog

ą

by

ć

docelowo uporz

ą

dkowane inaczej w kodzie wynikowym

ni

ż

wyst

ę

puj

ą

w programie

ź

ródłowym

Pola danych umieszczone w pobli

ż

u korzystaj

ą

cych

z nich instrukcji

stanowi

ą

ce procedury fragmenty umieszczone w

tek

ś

cie programu głównego

main

function

data

blok 0

blok 1

blok 2

program

ź

ródłowy

asemblacja

background image

Bloki programu - asembler

Asembler grupuje cz

ęś

ci kodu/danych, które s

ą

rozproszone w

programie

ź

ródłowym, a posiadaj

ą

ten sam charakter

Korzy

ś

ci:

Grupowanie zapewnia oszcz

ę

dno

ść

miejsca i krótszy kod

Dzi

ę

ki tej funkcjonalno

ś

ci – zwi

ą

zane ze sob

ą

dane i kod mog

ą

by

ć

umieszczone blisko siebie, dla lepszej czytelno

ś

ci i

panowania nad programem

background image

Bloki programu

Blok 1

Blok 2

Blok 1

Blok 3

background image

Bloki programu

Dyrektywa USE:

USE [blockname]

omini

ę

cie pola danych

Kolejno

ść

w pliku wynikowym:

1, 3, 2, 4

background image

Tu zaczyna si

ę

blok domy

ś

lny

Bloki programu (przykład)

U

ż

yj bloku CBLKS

4096 bajtów

U

ż

yj bloku CDATA

background image

Bloki programu (przykład cd)

U

ż

yj domy

ś

lnego bloku

U

ż

yj bloku CDATA

background image

Użyj domyślnego bloku

Blok domy

ś

lny (bez nazwy) zawiera instrukcje wykonywalne

Blok CDATA zawiera pojedyncze dane (jedno-kilka słów)

Blok CBLKS zawiera dane blokowe (tablice)

U

ż

yj bloku CDATA

Bloki programu (przykład cd)

background image

asembler logicznie rearan

ż

uje bloki grupuj

ą

c składowe

rezultat – odpowiada wynikowi przepisania programu do
postaci, w której wyst

ę

puj

ą

zwarte segmenty

Bloki programu – zadanie asemblera

..........

CDATA

CBLKS

asemblacja

background image

Asembler u

ż

ywa wielu liczników programu

dyrektywa

USE

Dyrektywy wyró

ż

niaj

ą

sekcje, które zostan

ą

załadowane w ró

ż

ne

obszary pami

ę

ci

I przej

ś

cie asemblera

Ka

ż

dy blok programu – odr

ę

bny LC

Ka

ż

da etykieta w bloku –

adres wzgl

ę

dny

w stosunku do

pocz

ą

tku bloku

Na zako

ń

czenie I przej

ś

cia, ko

ń

cowa dla bloku warto

ść

LC =

długo

ść

bloku

Asembler mo

ż

e przypisa

ć

ka

ż

demu blokowi adresy

pocz

ą

tkowe w pliku wynikowym

II przej

ś

cie asemblera

Adres ka

ż

dego symbolu mo

ż

e by

ć

wyliczony poprzez

sumowanie adresu pocz

ą

tkowego bloku z

adresem wzgl

ę

dnym

symbolu

Bloki programu – zadanie asemblera

nie stosowane, gdy segmenty pami

ę

ci

background image

Grupowanie bloków przez asembler

adr wzgl

nr bloku

background image

Grupowanie bloków przez asembler

adr wzgl

nr bloku

background image

asembler „wewn

ę

trznie” rearan

ż

uje kod i dane w zwarte

bloki

kod generowany do pliku wynikowego nie musi by

ć

fizycznie przeorganizowany – wystarczy,

ż

e asembler

wpisze wła

ś

ciwy adres pocz

ą

tkowy dla ka

ż

dej sekcji

Przykład zawarto

ś

ci pliku wynikowego

Bloki programu – asembler/loader

background image

Bloki programu – zadanie loadera

background image

Dodatkowe korzy

ś

ci:

nie ma potrzeby
generowania kodu dla
tych 2 bloków –
wystarczy zarezerwowa

ć

miejsce w pami

ę

ci

Bloki programu – korzyści z grupowania

background image

4096 b

0027

Bloki programu – korzyści z grupowania

Dodatkowe korzy

ś

ci:

du

ż

e bloki danych poza

obszarem kodu programu
- mo

ż

na zastosowa

ć

krótsze skoki

background image

Bloki programu dla procesorów wspierających

segmenty pamięci

(ukryte)

Dost

ę

p do danych z ró

ż

nych segmentów

wymaga zmiany (cz

ę

ste?) zawarto

ś

ci

rejestru segmentowego

grupowa

ć

dane w segmentach

background image

nazwa

SEGMENT

[[READONLY]] [[align]] [[combine]] [[use]] [[‘class’]]

……………..
....................
nazwa

ENDS

Nazwa

: umo

ż

liwia grupowanie cz

ęś

ci segmentu

(ka

ż

da kolejna definicja z t

ą

sam

ą

nazw

ą

=

kontynuacja segmentu) i okre

ś

lenie adresu

Segmenty

background image

nazwa

SEGMENT

[[READONLY]] [[

align

]] [[combine]] [[use]] [[‘class’]]

BYTE, ALIGN(n), WORD, DWORD, PARA, PAGE

Segmenty

BYTE

2 4 16 256

WORD, DWORD, PARA, PAGE

background image

nazwa

SEGMENT

[[READONLY]] [[align]] [[

combine

]] [[use]] [[‘class’]]

PUBLIC, STACK, COMMON, ATaddress, PRIVATE

Segmenty

Okre

ś

la porz

ą

dek wpisywania segmentów z

t

ą

sam

ą

nazw

ą

do

pliku wynikowego

PUBLIC, STACK

– przed wpisaniem do pliku wynikowego

składowe segmentu s

ą

scalane; (STACK pozwala

zainicjalizowa

ć

rejestr SS)

PRIVATE

– w pliku wynikowym składowe segmentu nie s

ą

scalone

background image

nazwa

SEGMENT

[[

READONLY

]] [[align]] [[combine]] [[

use

]] [[‘class’]]

USE16, USE32, FLAT

Segmenty

Okre

ś

la, czy generowany kod

ma odpowiada

ć

16, czy 32-

bitowym przesuni

ę

ciom

-wywołania procedur, powroty

-skoki

asembler wyka

ż

e bł

ą

d, gdy

napotka instrukcj

ę

zapisuj

ą

c

ą

do segmentu

nie zabezpiecza

przed

zapisaniem w trakcie
wykonania programu

READONLY

background image

nazwa

SEGMENT

[[READONLY]] [[align]] [[combine]] [[use]] [[

‘class’

]]

‘CODE’, ‘STACK’, ‘DATA’,
‘CONST’

Segmenty

Okre

ś

la kolejno

ść

post

ę

powania

z segmentami o ró

ż

nych

nazwach

background image

(1) asembler ł

ą

czy wszystkie segmenty PUBLIC o tej samej nazwie

(2) po zł

ą

czeniu wpisuje do pliku wyj

ś

ciowego w kolejno

ś

ci, jak w

programie

ź

ródłowym (z adresem pocz

ą

tkowym pierwszego

składnika segmentu)

(3) konsolidator rearan

ż

uje segmenty. Zaczyna od pierwszego

segmentu w pliku, nast

ę

pnie szuka segmentu o tej samej klasie i

konsoliduje go, wpisuj

ą

c jako kolejny do pliku .EXE

(4) powtarza kroki dla nast

ę

pnych klas

Segmenty - grupowanie

background image

Typowe definiowanie segmentów

...............zmienne

...............instrukcje

obszar stosu

background image

Segmenty

W procesorze rejestry segmentów np. : CS (+ FS), DS (+ GS), SS, ES.

U

ż

ytkownik odpowiedzialny za za

ł

adowanie w

ł

a

ś

ciwych warto

ś

ci do

rejestrów segmentowych.

Przykład:

PROG

SEGMENT
ASSUME

CS:

PROG

START

:

ADD

AX, BX

ADD

AX, CX

INT 3

PROG

ENDS

END

START

Procesory z segmentacj

ą

pami

ę

ci

background image

Segmenty

Dyrektywa ASSUME:

ASSUME segreg:segloc

Asembler wylicza przesuni

ę

cia, które wraz z zawarto

ś

ci

ą

rej. segment.

okre

ś

laj

ą

pe

ł

ny adres.

Przesuni

ę

cia do danych z innego, ni

ż

bie

żą

cy,

segmentu poprzedza „adresem” tego segmentu

Dyrektywa informuje asembler jak

ą

warto

ść

rej. segment. ustali

ł

u

ż

ytkownik. Nie generuje kodu ML!

ASSUME zwykle nie potrzebna dla CS (CS automatycznie przypisany
do bie

żą

cego segmentu programu

nazwa segmentu lub grupy

(równowa

ż

ne wyra

ż

enie)

background image

Segmenty - ASSUME

Program omija wpis do rejestru
segmentowego; dost

ę

p do danych

ę

dnie

wykonany zostanie w segmencie

DSEG1 (z przesuni

ę

ciami jak do

segmentu DSEG2)!

background image

Segmenty - ASSUME

Dobra praktyka:

umie

ść

ASSUME przed procedur

ą

.... je

ś

li tu nast

ę

pna procedura poprzed

ź

j

ą

dyrektyw

ą

ASSUME

U

ż

ywaj nazw w postaci:

DS1:variable

background image

Grupowanie segmentów

Rozmieszczenie w pami

ę

ci

background image

Instrukcja początkowa programu

Dyrektywa END:

END symbol

Etykieta instrukcji startowej

Przykład


Wyszukiwarka

Podobne podstrony:
PPS 2013 W6
W6 Technika harmonogramów i CPM
w6 Czołowe przekładanie walcowe o zebach srubowych
Plan pracy na 2011 pps
Zimne piwo pps
AM1 W6
wyklad7 pps
sredni wiek pps
wyklad3 pps
ulog w6 E
ZP W6 Planowanie
Metody numeryczne w6
PPS 2011 W7 id 381592 Nieznany
Modlitwa Mężczyzny, Prezentacje- pps, śmieszne PPS-y

więcej podobnych podstron