Wyklad03

Wyklad03



Wykład 3

Relokacja. Makrodefinicje.

Plik wynikowy

Produktem asemblera -> plik wynikowy - umożliwia wielokrotne załadowanie raz przetłumaczonego programu (ioader); wyjątek asemblery typu „przetłumacz-i-załaduj”.

Plik wynikowy zwykle * kod wykonywalny (in. maszynowy), lecz postać pośrednia

- 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

Główne składowe i główne operacje asemblera

Plik wynikowy

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

•Symbole: globalne symbole zdefiniowane w danym module, symbole importowane z innych modułów, symbole zdefiniowane przez linker •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.

0000

0001

0002

0100

0101

0102

0103

0104

0105

0106

0107

0108

0109 010A 01 OB 01OC 010D 010E 010F

0110

02

01

00

B2

97

74

0A

12

01

09

80

F7

78

FF

D8

FE

D5

E0

F9

22

np. MS-DOS .com

(rozmieszczenie i start zawsze od tego samego adresu 0100H)

1


Przykład prostego formatu pliku wynikowego.


Madonn L&hguag*


Rozwój asemblera Assemblei Langu og>?


At^duto Assomblor


Intel Hex Codę :030000 00020100FA

:10010000B297740A12010980F778FFD8FED5E0F99A

:0101100022CC

:00000001FF

Opis pierwszej linii piiku .HEX (intei Hex Codę)

: 03 0000 00 02 01 00 FA

| | | | | | |_ suma kontrolna

I I I I I I

| | | |_|_|_bajty kodu maszynowego (3)

I I I

I I I_typ

I I

| |_adres rozmieszczenia pierwszego bajtu

I

|_liczba bajtów kodu maszynowego


Przykładowy format heksadecymalny Intela pliku wynikowego.


Directiv*s

Relneallon

Bila

ł

Esternal

Relocatable

Routinas

ł

Rdoca.tfl.ble Assc-mbler and Loador

Llnking Loador - Macios -

I

it lonal Aflsombly


External

Routincs

t

Absolut* Assomblor with

Libr ary Routines


Ma ero As&einbler


Full-Fo&ture. Reloeatsbl* Maero As-sembler, willi Cond11 lonal Asac-mbly



Zagnieżdżone makrodefinicje

Przetwarzanie makrodefinicji w trakcie rozwijania

' 1 r2

MACROS

RDBUFF

MACKO

MACRO

{Defines SIC standard version macros) &INDEV, &BUFADR, &RECLTH

{SIC standard version)

3 r 4

WRBUFF

ENDM

MACRO

{End of RDBUFF}

&OUTDEV, &BUFADR, &RECLTH

(SIC standard version}

5

ENDM

{End of WRBUFF}

6

ENDM

{End of MACROS}

• Substytucja argumentów makro

-    wg. listy

STRG DATA1, DATA2

-    wg. przypisania

STRG SRC=DATA1, DST=DATA2


•    Podstawowy asembler - brak symboli lokalnych;

•    Makroasembler - zwykle kopiuje tekst źródłowy bez zmian symbole w tekście makrodefinicji nie są lokalne. —> Odrębne polecenie (LOCAL) dla określenia symboli lokalnych.

-    Makroprocesor nadaje unikalne nazwy w czasie wstawiania tekstu makrodefinicji do programu

-    Np. STRG MACRO

X1 EQU 10H -► STRG_1_X1 EQU 10H


Wywołania powtarzane

Skrócenie tekstu programu:

- dyrektywa FOR


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


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

tekst makro

ENDM


- dyrektywa REPEAT


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


REPEAT wyrażenie tekst makro ENDM


- dyrektywa WHILE


Powtarzaj tekst makro kiedy wyrażenie = TRUE (modyfikacja w makro!)_


WHILE wyrażenie tekst makro ENDM


Przetwarzanie programy

Program źródłowy

Przetwarzanie makro

Makro pno.,


Program rozwinięty


Definicja

„wklej''

Makrodefinicje

“Rozpoznaj definicje “Zachowaj definicje “Rozpoznaj wywołania makro °Rozwiń wywołania makro


Asembler


i


Kod wynikowy


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 : tablica definicji, tekst makro,

° NAMTAB : tablica nazw, indeks do DEFTAB,


ARGTAB


NAMTAB

DEFTAB


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

Algorytm jednoprzejściowego makroprocesora


EXPAND

Kopiuj

tekst

rozwinięcia,

substytucja

nazwa makro do ja do NAMTAB    DEFTAB


Funkcje dyrektyw


Funkcje dyrektyw



Etykieta

Dyrektywa

Operand

Komentarz

Symbol

SEGMENT

Parametry

Definicja segmentu; segmenty o wspólnej nazwie łączone;

Symbol

ENDS

Brak

Koniec segmentu

Brak

ASSUME

Rej.Segminazwa

Inf. dla asemblera którego segmentu dotyczy adres zawarty w „Rej.Segm"

Opcjonalna

GROUP

Lista segmentów

Złącz wymienione segmenty w jeden moduł

Symbol

EQU

Wyrażenie

Przypisanie symbolowi jego wartości (wartości mogą być względne lub bezwzględne)

Symbol

MAX (MIN)

Lista wyrażeń

SymboL-max (min) z listy

Symbol

SET

Wyrażenie

SymboU-wyrażenie (ten sam symbol można definiować wielokrotnie za pomocą SET)

Brak

USING

Nazwa

Wskazanie aktywnego rejestru bazowego

Brak

EXTRN

Lista symboli

Symbole zdefiniowane poza bieżącym programem

Brak

ENTRY

Lista symboli

Symbole wskazują punkty wejścia do programu (wywoływane z innego programu)


Etykieta

Dyrektywa

Operand

Komentarz

Opcjonalna

ASCII

Łańcuch znaków

Pole znaków

Opcjonalna

DB (DW, DD, DQ, DJ)

Łańcuch wyrażeń

Utwórz pole bą|tów (słów, podwójnych-, poczwórnych słów, 10-tek bajtów) zainicjalizowane wartościami wyrażeń

Opcjonalna

DATA

Lista stałych lub symboli

Utwórz pole zainicjalizowane danymi z listy

Opcjon.

DEC

Lista stałych dziesiętnych

Utwórz pole zainicjalizowane stałymi dziesiętnymi z listy

Brak

LITORG i

Wyrażenie

Początek pola literałów

Symbol

RECORD j

Polel :dlug,Pole2:dfug,..

Definicja struktury danych

Symbol

STRUĆ

Brak

Początek definicji struktury; zakończenie dyrektywą ENDS

Symbol

MACRO

Lista parametrów

Początek makrodefinicji

Brak

ENDM

Brak

Zakończenie makrodefinicji

Brak

IF |

Warunek, wyrażenie

Polecenie asemblacjl warunkowej

Brak

EŃDIF !

brak

Koniec bloku asemblowanego warunkowo


Funkcje dyrektyw


Etykieta

Dyrektywa

Operand

Komentarz

Flaga

ERRxx

Wyrażenie

Asembler zasygnalizuje błąd, gdy jest spełniony warunek „xx” dotyczący wyrażenia

Brak

UST

ON lub OFF

(LIST/NOLIST) włącz/wyłącz wykonywanie listingu

Brak

%OUT

Łańcuch

(ECHO) używana do sygnalizacji postępu asemblacji

Brak

XREF

Łańcuch z opcjami

Dołącz do listingu tabelę odniesień

Liczba

DUP

Usta wyrażeń

Wielokrotna deklaracja wartości

Nazwa

OPDEF

Parametry

Początek wierszy definiujących „wirtualną” instrukcję (zakończenie-ENDM)

Nazwa

PURGEDEF

Brak

Usuń nazwę instrukcji z tabeli instrukcji

Mnemonik

OPSYN

Mnemonik

Nadaj mnemonikowi z pola etykiety znaczenie mnemonika z pola operandu


Relokacja programów



©


Funkcje dyrektyw


Identyfikacja programu

IDENT

sterowanie programem źródłowym

END, INCLUDE

identyfikacja maszyny

MACHINĘ, .286, PPU

sterowanie loadei^em

LCC

sterowanie trybem

ABS, .RADIX, CODĘ, QUAL

sterowanie blokami 1 LC

BEGIN, DS, EVEN, LIMIT, ODD, ORG, OVERLAY, USE

sterowanie segmentami

SEGMENT, ASSUME, GROUP

deflnlnlowanle (Inlcjallzacja) symboli

EQU, MAX, MIN, MICCNT, SET

definiowanie rejestru bazowego

USING, DROP

konsolidacja z podprogramami

CSECT, ENTRY, EXTRN



Funkcje dyrektyw

generacja danych

ASCII, DB, DW, DD, DQ, DT, DATA, DEC, DEF, DIS, LIT, LITORG, PACKED, RECORD, STRUĆ

sterowanie makroasemblacją

ENDM, IRP,MACRO, REMOVE, SYSLIST, SYSNDX

asemblacja warunkowa

AGO, AIF, ANOP, ELSE, ENDIF, GBLx, IF-ELSE-ENDIF, IFF, IFT, IIF, LCLx, SET

sterowanie reakcją na błędy

ERR, ERRxx

sterowanie listingiem

LIST, TITLE, XREF

definiowanie operacji

OPDEF, PURGDEF

zarządzanie tablicą kodów ML

OPSYN

Funkcje dyrektyw

Etykieta

Dyrektywa

Operand

Komentarz

Brak

END

Wyrażenie adresowe

Wskazuje koniec programu. Operand ■ adres startowy programu

Brak

INCLUDE

Nazwa pliku

Włącz tekst z pliku do programu źródłowego

Brak

.486

Brak

WskazijJe program na procesor 80486

Brak

PPU

Łańcuch tekstowy

Identyfikuje peryferyjnąjednostkę przetwarzającą

Brak

LLC

Dyrektywa loader’a

Włącz dyrektywę I. do pliku wynikowego

Brak

ABS

Brak

Segment nlerelokowalny

Brak

REL

Brak

Segment relokowalny

Brak

.RADIX

B.O.D.H

Identyfikacja podstawy pozycyjnego systemu liczb

Brak

CODĘ

Znak

Wybór kodowania znaków

Brak

QUAL

Nazwa

Dodanie „nazwa” Jako przedrostka do nazw symboli (symbole lokalne)

Brak

USE

Nazwa LC

U żywą) LC o nazwie „nazwa”

Brak

BEGIN

Op1, Op2

Początek bloku

Op1 ■ nazwa LC; op2 ■ adres startowy dla Op1

Brak

DS

Wyrażenie

Utwórz „x-wyraźenle” lokalizacji danych

Brak

ALIGN

wyrażenie

Rozmleić od adr.*"wlelokrotnoicl wyrażenia

Opcjon.

ORG

Wyrażenie

LCBwyrażenle

W pierwszym przejściu makroasembler tworzy dodatkową tablicę makr:

-    symbol przypisany do makra (nazwa),

-    tekst makra,

-    biożą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

Problem makro

•    Kod źródłowy do przekopiowania

•    Zastępowanie parametrów

•    Lokainość symboli

•    Rozwinięcie warunkowe

•    Instrukcje definiujące makro

Procedura a wywołanie makro


Wywołanie procedury; użycie stosu


Ten sam tekst wielokrotnie


Main


Kopiowanie kodo - przykład


Udogodnienia asemlera - asemblacja warunkowa


- makrodefinicje


Asemblacja warunkowa

• Polecenia sterujące asemblacją (wykonywane w czasie semblacji)

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

Processor    =    803 86    ;Set to 8086 for 8086-only codę

if

Processor eq

80386

shl

ax, 4

else

;Must be 8086 processor

mov

cl, 4

shl

ax, cl

endif

Za wyjątkiem instrukcji:

•    z adresowaniem natychmiastowym

•    względnym (względem PC, rej. bazowego) kody pozostałych instrukcji wymagają modyfikacji

Wszystkie wartości obliczone przez asembler na podstawie adresów:

-    lokalizacje etykiet

-    wartości wyrażeń

Dwie możliwości realizacji relokowalności:

•    dodawanie do adresów odpowiedniej wartości bazowej przez procesor w trakcie wykonywania programu (rejestr bazowy)

•    modyfikacja adresów w trakcie ładowania bądź konsolidacji

programu    _

Kooperacja asemblera i loadera (linkera) -> plik wynikowy

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 i

R

36

BUFEND

R

1036

MAXLEN j

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

Makroinstrukcje


Makroinstrukcja - symbol, którymu 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)

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 użyte w makro są lokalne w obrębie makro i nie są mylone przez asembler z identycznymi symbolami używanymi poza nim.


ADD_AB_R0R1

MACRO

CLC

; zeruj bit przeniesienia

ADD A,R0

; dodaj młodsze bajty

ADDC B,R1

; dodaj starsze bajty z uwzględnieniem przeniesienia

ENDM

; koniec makro


Przykład definicji makra.


• dodawanie do adresów odpowiedniej wartości bazowej przez procesor w trakcie wykonywania programu (rejestr bazowy)

-    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

• modyfikacja adresów w trakcie ładowania bądź konsolidacji programu

-    Wykonywana przez odrębny program np. w czasie rzeczywistym w trakcie ładowania

-    Wymaga odpowiedniej informacji w pliku wynikowym

-    Maszyny z sementacją - 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

Relokowalność. Format pliku wynikowego

Bąjty (hex) Znaczenie *—__

| 00-01 | |“MZ” Z ASCII. |

Format MS-DOS .EXE

| 02-03 | |L. bajtów używ. w ostatnim 512-bajtowym) bloku. |

| 04-05 | L. bloków (512 bajt.) składających się na program |

| 06-07 | L. pozycji relokowalnych zapisanych po nagłówku|

| 08-09 ||Liczba16-bajtowych paragrafów w nagłówku |

| 0A-0B | Min. dodatkowej pamięci (w 16 bajt. paragrafach) |

| 0C-0D ||Mak. dodatkowej pamięci (w 16 bajt. paragrafach)}

adresy

segment: offset

| 0E-0F | |Wzgl. poł. segmentu stosu; inlcjallzacja SS ~/ |

| 10-11 | Początkowa wartość SP / |

| 12-13 | |Suma kontrolna / |

| 14-15 | iPoczątkowa wartość IP (instructlon panter). /[

po nagłówku: kod programu

| 16-17 | |Początk. wzgl. wartość CS / /

| 18-19 ||Przes. do pierw, relok. elementp^relpos) / |

| 1A-1B ||Numer nakładki (0 - prograrnfgłówny) / |

| reipos | |Pozycje relokowalne * / |

I    0x0    W CZASIE WYKONYWANIA

0x0FCD0

?

PROGRAM

0x0FFF123 ^ ?

PROGRAM

PROGRAM


!    PROGRAM MOŻE BYĆ

ZAŁADOWANY W DOWOLNE L_ MIEJSCE

0x024

Relokowalność = cecha umożliwiająca przemieszczanie programu w pamięci

Ilustracja zagadnienia relokacji programu.

Relokowalność

Relokowalność posiada szereg korzystnych cech:

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

-asemblery absolutne - asemblery relokowalne

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

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

Wiersz źrói

iłowy

Załadi

Dwany o

id 0000H

Załad

owany c

)d 0A00H

LJMP

START

0000:

02

0A00:

02

0001:

01

0A01:

OB

0002:

00

0A02:

00

START: CPL LED

0100:

B2

0B00:

B2

0101:

97

0B01:

97

MOV A, #10

0102:

74

0B02:

74

0103:

0A

0B03:

OA

LCALL

DELAY

0104:

12

0B04:

12

0105:

01

0B05:

OB

0106:

09

0B06:

09

SJMP

START

0107:

80

0B07:

80

0108:

F7

0B08:

F7

DELAY:MOV R0,#0FFH

0109:

78

BB09:

78

010A:

FF

OBOA:

FF

LOOP:DJNZRO,1

LOOP

01 OB:

D8

OBOB:

D8

010C:

FE

OBOC:

FE

DJNZ ACC

DELAY

010D:

D5

OBOD:

D5

010E:

E0

OBOE:

EO

010F:

F9

OBOF:

F9

RET

0110:

22

0B10:

22

_______

___


Wyszukiwarka

Podobne podstrony:
Wykład 3Relokacja. Makrodefinicje Plik wynikowy Produktem asemblera -» plik wynikowy - umożliwia
E651 ukc Uzasadni), dlaczego wykładnik potęgi przy kapitałowym czynniku produkcji musi być dodatni i
wyklady ® Mozilla Firefox Plik Edycja Widok Historia Zakładki Narzędzia Pomoc e ^ O   &nbs
44427 P1020073 (4) INFORMATYKA WYKŁAD 7 Temat: Język C Plik-z danymi
WYKŁADY w zakresie otrzymywania niektórych wyników badań laboratoryjnych w czasie rzeczywistym,
Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idleP
formularz Wykład 9 - Mozilla Firefox Plik Edycja Widok Historia Zakładki Narzędzia Pomoco a o http:/
DSCF5252 WYKŁAD II ŹRÓDŁA ENERGII WYKORZYSTYWANE W PRODUKCJI ZWIERZĘCEJ
wchodzą: wykład oraz ćwiczenia, których uprzednie zaliczenie jest warunkiem, który umożliwia
Montażowe przyrządy na limach produkcyinych Oferujemy systemy montażowe, umożliwiające łatwy montaż
Wysokie walory techniczne l użytkowe produkowanego taboru kolejo wago umożliwiły rozwój eksportu wag
Połączenie informacji o całości projektu Produkty z rodziny Autodesk Navisworks umożliwiają sprawną
WygokJo walory techniczne I użytkowe produkowanego taboru kolejo wago umożliwiły rozwój eksportu wag
Montażowe przyrządy na limach produkcyinych Oferujemy systemy montażowe, umożliwiające łatwy montaż
Montażowe przyrządy na limach produkcyinych Oferujemy systemy montażowe, umożliwiające łatwy montaż
Montażowe przyrządy na limach produkcyinych Oferujemy systemy montażowe, umożliwiające łatwy montaż

więcej podobnych podstron