PPS 2013 W2

background image

Wykład 2

Zaawansowane mechanizmy

j

ę

zyka asemblera

background image

Dyrektywy
Asemblacja warunkowa
Makroinstrukcje
Zagadnienie relokacji
Postacie pliku wynikowego

background image

Możliwości asemblera

p

o

st

ę

p

background image

Dyrektywy asemblera

background image

Rozszerzenie języka

asemblera - dyrektywy

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

Rozszerzenie języka

asemblera - dyrektywy

W prostych asemblerach – kilka
dyrektyw;

W zaawansowanych asemblerach –
dziesi

ą

tki dyrektyw.

background image

Funkcje dyrektyw

background image

Funkcje dyrektyw

background image

Funkcje dyrektyw

sterowanie

identyf.

loader

tryb

segmenty

background image

Funkcje dyrektyw

przypisanie

konsolidacja

background image

Funkcje dyrektyw

dane

makro

warunki

background image

Funkcje dyrektyw

ędy

wydruk

kody

background image

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

ź

ródłowym zdefiniowano parametr=typ procesora

Przykład:

background image

Makroinstrukcje

background image

Makroinstrukcje

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)

definicja makro

„wywołanie” makro

„wywołanie” makro

..........

..........

program

background image

Makroinstrukcje

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

zdefinio

Korzyści stosowania makroinstrukcji:

Redukuje liczbęę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.

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.

background image

WRREC

RDREC

Np. 2-
krotne
wywołanie

Procedura a wywołanie makro

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

W pierwszym przejściu makroasembler tworzy dodatkową tablicę

makr:

- symbol przypisany do makra (nazwa),
- tekst makra,
- bie
żący licznik użycia w programie

W tym samym przejściu -

po znalezieniu symbolu makra,

makroasembler zastępuje ten symbol tekstem odczytanym z
tablicy.

Wpisany tekst jest analizowany w celu znalezienia etykiet.

- modyfikacja

symboli etykiet

w tekście makra, aby

zachowały lokalny charakter (zwykle unikalny przedrostek)

Dalsza praca makroasemblera – analiza programu – jak w I-szym

przejściu asemblera

Makroasembler

background image

Program źródłowy

Makro procesor

Asembler

Kod wynikowy

Makrodefinicje

Przetwarzanie makro

Definicja

„wklej”

Przetwarzanie programu

Program rozwinięty

Rozpoznaj definicje

Zachowaj definicje

Rozpoznaj wywołania makro

Rozwi

ń

wywołania makro

background image

Problem makro

Instrukcje definiuj

ą

ce makro

Zast

ę

powanie parametrów

Lokalno

ść

symboli

Rozwini

ę

cie warunkowe

background image

Kopiowanie kodu - przykład

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

.

{
{

background image

Zastąpienie parametrów - przykład

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

{
{

background image

Substytucja argumentów makro

wg. listy

STRG DATA1, DATA2

wg. przypisania

STRG SRC=DATA1, DST=DATA2

Zastąpienie parametrów, lokalność symboli

Podstawowy asembler –

brak symboli lokalnych

;

Makroasembler –

je

ż

eli

kopiuje tekst

ź

ródłowy bez zmian

symbole w tek

ś

cie makrodefinicji

nie s

ą

lokalne

. –

Wtedy

odr

ę

bne polecenie (

LOCAL

) dla okre

ś

lenia symboli lokalnych

Symbole lokalne

- makroprocesor nadaje unikalne nazwy w

czasie wstawiania tekstu makrodefinicji do programu

– Np.

STRG MACRO

X1

EQU

10H

STRG_1_X1

EQU

10H

background image

Zagnieżdżone makrodefinicje

Przetwarzanie makrodefinicji w trakcie rozwijania

ENDM

ENDM

ENDM

........

RDBUFF

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

WRBUFF

........

MACROS MACRO

background image

„Makro” - wywołania powtarzane

Skrócenie tekstu programu:

- dyrektywa

FOR

FOR

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

tekst makro

ENDM

- dyrektywa

REPEAT

REPEAT wyra

ż

enie

tekst makro

ENDM

- dyrektywa

WHILE

WHILE wyra

ż

enie

tekst makro

ENDM

Powtórz makro „warto

ść

wyra

ż

enia”

razy

Parametr w tek

ś

cie – zast

ą

piony

kolejnym argumentem z listy

Powtarzaj tekst makro kiedy wyra

ż

enie

= TRUE (modyfikacja w makro!)

background image

Makroprocesory

Jednoprzej

ś

ciowe

Ka

ż

de makro musi by

ć

zdefiniowane przed u

ż

yciem jego

wywołania

Mo

ż

e podczas rozwijania makro przetwarza

ć

definicje

dopuszczalne definicje zagnie

ż

d

ż

one

Dwuprzej

ś

ciowe

Przej

ś

cie 1: rozpoznaj makrodefinicje

Przej

ś

cie 2: rozpoznaj makrowywołania

background image

Makroprocesor jednoprzejściowy

Wymaganie

Ka

ż

de makro musi by

ć

uprzednio zdefiniowane

Działania makroprocesora przy analizie tekstu

ź

ródłowego

makrodefinicja: DEFINE

wywołanie makro: EXPAND

DEFTAB

NAMTAB

ARGTAB

DEFTAB

: tablica definicji, tekst makro,

NAMTAB

: tablica nazw, indeks do DEFTAB,

ARGTAB

: argumenty.

DEFINE

EXPAND

PROCESSLINE

MACRO

CALL

Definicja zagnie

ż

d

ż

ona

background image

macro

GETLINE

PROCESSLINE

GETLINE

Następny wiersz

PROCESSLINE

jest

makro

ARGTAB

NAMTAB

nazwa makro do
NAMTAB

makrodefinicja
do DEFTAB

Algorytm jednoprzejściowego makroprocesora

DEFINE

Kopiuj
definicję
makro z
pliku
źródłowego

EXPAND

Kopiuj
tekst
rozwinięcia,
substytucja

RDBUFF

DEFTAB

RDBUFF

WRBUFF

WRBUFF

background image

READ

Search

(Pseudo-Op Table)

Search NAMTAB

(Macro Name Table)

Search

(Machine Op Table)

Process

machine

instruction

R

R

Type?

MACRO

Define

Process

pseudo-ops

R

R

MACRO

Expand

R

Pass 2

Pass 1

Makroasembler 2 przejściowy

background image

Relokacja programów. Postać wynikowa

background image

PR O G R AM

PR O G R AM

0 x0F C D 0

?

?

0 x0 F F F 123

0x0

0x02 4

W C ZA S IE W YK O N YW A N IA
P R O G R A M MO

ś

E B Y

Ć

Z A Ł A D O W A N Y W D O W O L N E
MIE JS C E

PR O G R A M

Ilustracja zagadnienia relokacji programu.

Relokowalność

=

cecha

umożliwiająca

przemieszczanie programu w pamięci

Relokowalność

background image

zwi

ę

ksza efektywno

ść

przygotowania programu

programy mog

ą

by

ć

przygotowywane w postaci oddzielnych

modu

ł

ów (np. przez ró

ż

nych programistów, w tym samym

czasie);

daje mo

ż

liwo

ść

u

ż

ycia zasobów

ź

ród

ł

owych

do programu mo

ż

na w

łą

czy

ć

modu

ł

y, które zosta

ł

y

uprzednio przygotowane

umo

ż

liwia wieloprogramow

ą

prac

ę

systemu komputerowego

program mo

ż

e by

ć

za

ł

adowany w dost

ę

pne miejsce w

pami

ę

ci.

Relokowalność

Relokowalno

ść

posiada szereg korzystnych cech:

background image

0B10: 22

0110: 22

RET

0B0F:

F9

010F:

F9

0B0E:

E0

010E:

E0

0B0D:

D5

010D:

D5

DJNZ

ACC,DELAY

0B0C:

FE

010C:

FE

0B0B:

D8

010B:

D8

LOOP:DJNZ R0,LOOP

0B0A:

FF

010A:

FF

0B09:

78

0109:

78

DELAY:MOV R0,#0FFH

0B08:

F7

0108:

F7

0B07:

80

0107:

80

SJMP

START

0B06:

09

0106:

09

0B05:

0B

0105:

01

0B04:

12

0104:

12

LCALL

DELAY

0B03:

0A

0103:

0A

0B02:

74

0102:

74

MOV

A,#10

0B01:

97

0101:

97

0B00:

B2

0100:

B2

START:

CPL LED

0A02:

00

0002:

00

0A01:

0B

0001:

01

0A00: 02

0000:

02

LJMP

START

Za

ł

adowany od 0A00H

Za

ł

adowany od 0000H

Wiersz źród

ł

owy

background image

Kody instrukcji

wymagaj

ą

modyfikacji

za wyj

ą

tkiem instrukcji:

z adresowaniem natychmiastowym

wzgl

ę

dnym (wzgl

ę

dem PC, rej. bazowego)

rejestrowym

bezargumentowych

W instrukcjach

wymagaj

ą

modyfikacji

wszystkie warto

ś

ci obliczone

przez asembler na podstawie adresów:

- lokalizacje etykiet

- warto

ś

ci wyra

ż

e

ń

Realizacja relokowalności

background image

Dwie mo

ż

liwo

ś

ci realizacji relokowalno

ś

ci:

1.

dodawanie

do adresów odpowiedniej warto

ś

ci bazowej przez

procesor w trakcie wykonywania programu (

rejestr bazowy

)

Realizacja relokowalności

Procesor musi posiada

ć

rejestr bazowy

Je

ż

eli procesor posiada rejestr limitu segmentu –

mo

ż

liwo

ść

ochrony programu

Prosta realizacja relokacji; program

przetłumaczony z adresami wzgl

ę

dem pocz

ą

tku

programu

background image

Dwie mo

ż

liwo

ś

ci realizacji relokowalno

ś

ci (cd):

2. modyfikacja adresów

w trakcie

ł

adowania b

ą

d

ź

konsolidacji

programu

Kooperacja asemblera i loadera (linkera)

plik wynikowy

Realizacja relokowalności

- Wykonywana przez odr

ę

bny program np. w czasie

rzeczywistym w trakcie ładowania

- Wymaga odpowiedniej informacji w pliku wynikowym
Maszyny z segmentacj

ą

– modyfikacja warto

ś

ci

rejestrów segmentowych; w segmencie adresacja
wzgl

ę

dna

Uwaga! Modyfikacja nie mo

ż

e dotyczy

ć

adresów

lokalizacji poza danym procesem

Wektory przerwa

ń

Zasoby systemowe

background image

Relokowalność. Wyrażenia

Wyra

ż

enia mo

ż

na sklasyfikowa

ć

jako

bezwzgl

ę

dne

or

wzgl

ę

dne

MAXLEN

EQU

BUFEND-BUFFER

BUFEND i BUFFER s

ą

wielko

ś

ciami wzgl

ę

dnymi, reprezentuj

ą

cymi

adresy w programie

jednak

ż

e wyra

ż

enia BUFEND-BUFFER reprezentuje wyra

ż

enie

bezwzgl

ę

dne

Gdy wielko

ś

ci

wzgl

ę

dne

s

ą

sparowane z przeciwnymi znakami

, zale

ż

no

ść

od warto

ś

ci adresu pocz

ą

tkowego programu jest zniesiona; wynik na

warto

ść

bezwzgl

ę

dn

ą

.

Symbol

Type

Value

RETADR

R

30

BUFFER

R

36

BUFEND

R

1036

MAXLEN

A

1000

W ogólno

ś

ci dla okre

ś

lenia typu

wyra

ż

enia: przeanalizowa

ć

typy symboli w

programie

Mno

ż

enie i dzielenie wielko

ś

ci

wzgl

ę

dnych jest niedopuszczalne

background image

-asemblery absolutne

asembler absolutny przypisuje bajtom kodu
maszynowego adresy absolutne (bezwzgl
ędne)

- asemblery relokowalne

w asemblerze relokowalnym adresy określone dla
poszczególnych bajtów s
ą zmienne. Adresy
bezwzgl
ędne zostaną określone w późniejszym etapie
przetwarzania programu przez loader lub linker
(konsolidator).

Relokowalność

background image

Mechanizm umożliwiający relokowalność - plik wynikowy

Produktem asemblera

plik wynikowy

- umo

ż

liwia wielokrotne

załadowanie raz przetłumaczonego programu (loader); wyj

ą

tek

asemblery typu „przetłumacz-i-załaduj”.

Plik wynikowy zwykle

≠≠≠≠

kod wykonywalny (in. maszynowy), lecz

posta

ć

po

ś

rednia

- np. + instrukcje dla loadera jak załadowa

ć

program

Format kodu wynikowego zale

ż

y od tego, jak dalece ma by

ć

on

przetwarzany przed ostatecznym załadowaniem programu do
pami

ę

ci.

-

przemieszczanie programu

- konsolidacja z innymi modułami

background image

Relokowalność. Realizacja.

Zwykle ostatni etap relokacji realizuje loader

Wszystkie pozycje, których adresy umieszczone s

ą

po

nagłówku pliku wynikowego podlegaj

ą

przetworzeniu

Do warto

ś

ci pozycji dodawane jest przesuni

ę

cie

wynikaj

ą

ce z relokacji

background image

Asembler

Asembler

Linker

(konsolidator)

Konwerter

pliku

wynikowego

Konwenter listingu

PROM

programator

Emulator

sprz

ę

towy

Zintegrowany

debuger

Pakiet

asemblera

Plik listingu z
warto

ś

ciami

absolutnymi

Plik w
formacie
HEX

Plik tablicy
symboli

Plik
wynikowy

Plik
biblioteczny

Plik ładowalny

Debugger

Elementy mechanizmu umo

ż

liwiaj

ą

cego relokowalno

ść

i modułowo

ść

background image

Plik wynikowy

background image

0000

02

0001

01

0002

00

0100

B2

0101

97

0102

74

0103

0A

0104

12

0105

01

0106

09

0107

80

0108

F7

0109

78

010A

FF

010B

D8

010C

FE

010D

D5

010E

E0

010F

F9

0110

22

Przykład prostego formatu pliku wynikowego.

rozmieszczenie i start zawsze od tego samego
adresu np. w przykładzie 0000H/0100H
Inne przykłady: np. MS-DOS .com

background image

Organizacja typowego pliku wynikowego

Informacja nagłówkowa

: informacja o pliku:rozmiar kodu, nazwa

pliku

ź

ródłowego, data utworzenia

Kod wynikowy

: instrukcje binarne i dane utworzone przez kompilator

lub asembler

Informacja relokacyjna

: lista pozycji w kodzie wynikowym, które

musz

ą

podlega

ć

relokacji

Informacja dla debuggingu

: informacje nieu

ż

yteczne dla loadera lecz

potrzebne dla debuggera (np. symbole lokalne, nry wierszy itp..)

Niektóre formaty pliku wynikowego zawieraj

ą

dodatkowe informacje.

Wystarczaj

ą

cy dla załadowania format obejmuje binarny kod wynikowy.

Plik wynikowy

background image

Intel Hex Code
:030000 00020100FA
:10010000B297740A12010980F778FFD8FED5E0F99A
:0101100022CC
:00000001FF

Opis pierwszej linii pliku .HEX (Intel Hex Code)
: 03 0000 00 02 01 00 FA

| | | | | | |_ suma kontrolna

| | | | | |
| | | |__|__|___ bajty kodu maszynowego (3)
| | |
| | |____________ typ
| |
| |_____________ adres rozmieszczenia pierwszego bajtu
|
|______________ liczba bajtów kodu maszynowego

Przykładowy format heksadecymalny Intela pliku wynikowego.

cdn...

background image

Relokowalność. Format pliku wynikowego

Format MS-DOS

.EXE

adresy

segment:offset

po nagłówku: kod

programu


Wyszukiwarka

Podobne podstrony:
PPS 2013 W7
PPS 2015 W2
PPS 2013 W5
PPS 2013 W4
PPS 2013 W8
PPS 2013 W5
PPS 2013 W6
Proces szkolenia pracowników Cykl szkoleniowy, 2012 2013 W2
Logika W2 2013 14 ppt
W2 10 2013
ZJ w2 2013

więcej podobnych podstron