Podstawy Informatyki Jezyki programowania cd

Transkrypt

Podstawy Informatyki Jezyki programowania cd
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Podstawy Informatyki
Języki programowania c.d.
dr inż. Alina MOMOT
[email protected]
http://zti.polsl.pl/AMomot/pi
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Plan wykładu
Asembler maszyny W
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
2 Rozszerzenia asemblera maszyny W
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
3 Segmentacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
4 Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Założenia
Składnia instrukcji programu:
[< etykieta >:] < kod > [< argument >]
Opcjonalna etykieta to nazwa zakończona dwukropkiem
Kod jest wymagany, może to być kod rozkazu:
DOD, ODE, POB, ŁAD, SOB, SOM, STP
lub dyrektywa (pseudorozkaz):
KON – koniec generacji kodu,
RPA - rezerwacja pamięci,
RST - rezerwacja pamięci dla stałej
Opcjonalnym argumentem może być etykieta lub liczba dziesiętna
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład programu samomodyfikującego się
Tekst źródłowy programu
ET:
KONIEC:
ST1:
A:
POB A
SOM KONIEC
POB ET
DOD ST1
ŁAD ET
SOB ET
STP
RST 1
RST 5
RST 67
RST -1
KON
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład programu samomodyfikującego się
Tekst źródłowy programu
0
ET:
1
2
3
4
5
6 KONIEC:
7
ST1:
8
A:
9
10
Tablica
Rozkaz
DOD
ODE
ŁAD
POB
SOB
SOM
STP
POB A
SOM KONIEC
POB ET
DOD ST1
ŁAD ET
SOB ET
STP
RST 1
RST 5
RST 67
RST -1
KON
dr inż. Alina MOMOT
Języki programowania c.d.
T1
Kod
001
010
011
100
101
110
111
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład programu samomodyfikującego się
Tekst źródłowy programu
0
ET:
1
2
3
4
5
6 KONIEC:
7
ST1:
8
A:
9
10
Tablica
Rozkaz
DOD
ODE
ŁAD
POB
SOB
SOM
STP
POB A
SOM KONIEC
POB ET
DOD ST1
ŁAD ET
SOB ET
STP
RST 1
RST 5
RST 67
RST -1
KON
dr inż. Alina MOMOT
Tablica
Etykieta
ET
KONIEC
ST1
A
Języki programowania c.d.
T1
Kod
001
010
011
100
101
110
111
T2
Adres
00000
00110
00111
01000
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład programu samomodyfikującego się
Tekst źródłowy programu
0
ET:
1
2
3
4
5
6 KONIEC:
7
ST1:
8
A:
9
10
Kod maszynowy
POB A
SOM KONIEC
POB ET
DOD ST1
ŁAD ET
SOB ET
STP
RST 1
RST 5
RST 67
RST -1
KON
dr inż. Alina MOMOT
100
110
100
001
011
101
111
000
000
010
111
01000
00110
00000
00111
00000
00000
00000
00001
00101
00011
11111
Języki programowania c.d.
Tablica
Rozkaz
DOD
ODE
ŁAD
POB
SOB
SOM
STP
Tablica
Etykieta
ET
KONIEC
ST1
A
T1
Kod
001
010
011
100
101
110
111
T2
Adres
00000
00110
00111
01000
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład programu samomodyfikującego się
Tekst źródłowy programu
0
ET:
1
2
3
4
5
6 KONIEC:
7
ST1:
8
A:
9
10
Kod maszynowy
POB A
SOM KONIEC
POB ET
DOD ST1
ŁAD ET
SOB ET
STP
RST 1
RST 5
RST 67
RST -1
KON
dr inż. Alina MOMOT
100
110
100
001
011
101
111
000
000
010
111
01001
00110
00000
00111
00000
00000
00000
00001
00101
00011
11111
Języki programowania c.d.
Tablica
Rozkaz
DOD
ODE
ŁAD
POB
SOB
SOM
STP
Tablica
Etykieta
ET
KONIEC
ST1
A
T1
Kod
001
010
011
100
101
110
111
T2
Adres
00000
00110
00111
01000
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład programu samomodyfikującego się
Tekst źródłowy programu
0
ET:
1
2
3
4
5
6 KONIEC:
7
ST1:
8
A:
9
10
Kod maszynowy
POB A
SOM KONIEC
POB ET
DOD ST1
ŁAD ET
SOB ET
STP
RST 1
RST 5
RST 67
RST -1
KON
dr inż. Alina MOMOT
100
110
100
001
011
101
111
000
000
010
111
01010
00110
00000
00111
00000
00000
00000
00001
00101
00011
11111
Języki programowania c.d.
Tablica
Rozkaz
DOD
ODE
ŁAD
POB
SOB
SOM
STP
Tablica
Etykieta
ET
KONIEC
ST1
A
T1
Kod
001
010
011
100
101
110
111
T2
Adres
00000
00110
00111
01000
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład - sumowanie elementów tablicy
PETLA:
ET:
KONIEC:
POB N
ODE ST1
SOM KONIEC
ŁAD L
POB TAB
DOD S
ŁAD S
POB ET
DOD ST1
ŁAD ET
POB L
SOB PETLA
STP
dr inż. Alina MOMOT
ST1:
S:
N:
TAB:
L:
RST 1
RST 0
RST 5
RST 7
RST 13
RST 21
RST 19
RST 3
RPA
KON
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład - sumowanie elementów tablicy
0
1 PETLA:
2
3
4
ET:
5
6
7
8
9
10
11
12 KONIEC:
POB N
ODE ST1
SOM KONIEC
ŁAD L
POB 16
DOD S
ŁAD S
POB ET
DOD ST1
ŁAD ET
POB L
SOB PETLA
STP
dr inż. Alina MOMOT
13 ST1:
14
S:
15
N:
16 TAB:
17
18
19
20
21
L:
RST 1
RST 0
RST 5
RST 7
RST 13
RST 21
RST 19
RST 3
RPA
KON
Podgląd zmiennych:
S=0
L=?
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład - sumowanie elementów tablicy
0
1 PETLA:
2
3
4
ET:
5
6
7
8
9
10
11
12 KONIEC:
POB N
ODE ST1
SOM KONIEC
ŁAD L
POB 17
DOD S
ŁAD S
POB ET
DOD ST1
ŁAD ET
POB L
SOB PETLA
STP
dr inż. Alina MOMOT
13 ST1:
14
S:
15
N:
16 TAB:
17
18
19
20
21
L:
RST 1
RST 0
RST 5
RST 7
RST 13
RST 21
RST 19
RST 3
RPA
KON
Podgląd zmiennych:
S=7
L=4
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład - sumowanie elementów tablicy
0
1 PETLA:
2
3
4
ET:
5
6
7
8
9
10
11
12 KONIEC:
POB N
ODE ST1
SOM KONIEC
ŁAD L
POB 18
DOD S
ŁAD S
POB ET
DOD ST1
ŁAD ET
POB L
SOB PETLA
STP
dr inż. Alina MOMOT
13 ST1:
14
S:
15
N:
16 TAB:
17
18
19
20
21
L:
RST 1
RST 0
RST 5
RST 7
RST 13
RST 21
RST 19
RST 3
RPA
KON
Podgląd zmiennych:
S = 20
L=3
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład - sumowanie elementów tablicy
0
1 PETLA:
2
3
4
ET:
5
6
7
8
9
10
11
12 KONIEC:
POB N
ODE ST1
SOM KONIEC
ŁAD L
POB 19
DOD S
ŁAD S
POB ET
DOD ST1
ŁAD ET
POB L
SOB PETLA
STP
dr inż. Alina MOMOT
13 ST1:
14
S:
15
N:
16 TAB:
17
18
19
20
21
L:
RST 1
RST 0
RST 5
RST 7
RST 13
RST 21
RST 19
RST 3
RPA
KON
Podgląd zmiennych:
S = 41
L=2
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład - sumowanie elementów tablicy
0
1 PETLA:
2
3
4
ET:
5
6
7
8
9
10
11
12 KONIEC:
POB N
ODE ST1
SOM KONIEC
ŁAD L
POB 20
DOD S
ŁAD S
POB ET
DOD ST1
ŁAD ET
POB L
SOB PETLA
STP
dr inż. Alina MOMOT
13 ST1:
14
S:
15
N:
16 TAB:
17
18
19
20
21
L:
RST 1
RST 0
RST 5
RST 7
RST 13
RST 21
RST 19
RST 3
RPA
KON
Podgląd zmiennych:
S = 60
L=1
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Przykład programu samomodyfikującego się
Przykład - sumowanie elementów tablicy
Przykład - sumowanie elementów tablicy
0
1 PETLA:
2
3
4
ET:
5
6
7
8
9
10
11
12 KONIEC:
POB N
ODE ST1
SOM KONIEC
ŁAD L
POB 21
DOD S
ŁAD S
POB ET
DOD ST1
ŁAD ET
POB L
SOB PETLA
STP
dr inż. Alina MOMOT
13 ST1:
14
S:
15
N:
16 TAB:
17
18
19
20
21
L:
RST 1
RST 0
RST 5
RST 7
RST 13
RST 21
RST 19
RST 3
RPA
KON
Podgląd zmiennych:
S = 63
L=0
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Makroasembler - założenia
Makroasembler umożliwia tworzenie własnych instrukcji przez
programistę
Makroinstrukcje zastępując powtarzające się fragmenty kodu jedną
nazwą zwiększają czytelność programu
Składnia makroinstrukcji:
MAKRO <nazwa> <lista parametrów fromalnych>
[ NAZWA LOKALNA <lista nazw lokalnych> ]
<rozkazy tworzące makroinstrukcję>
KONM
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Przykład zastosowania makroinstrukcji
...
...
...
...
POB A
DOD ST1
ŁAD A
...
POB B
DOD ST1
ŁAD B
MAKRO INC P
POB P
DOD ST1
ŁAD P
KONM
...
⇒
INC A
...
⇒
INC B
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Przykład programu z makroinstrukcją
Zadanie: Policzyć sumę wartości bezwzględnych dwóch komórek pamięci
X i Y, a wynik zapisać w komórce pamięci Z.
Makroinstrukcja
MAKRO ABS Liczba
NAZWA LOKALNA Ujemna, Koniec
POB Liczba
SOM Ujemna
SOB Koniec
Ujemna: ODE Liczba
ODE Liczba
Koniec:
KONM
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Przykład programu z makroinstrukcją
Zadanie: Policzyć sumę wartości bezwzględnych dwóch komórek pamięci
X i Y, a wynik zapisać w komórce pamięci Z.
Makroinstrukcja
MAKRO ABS Liczba
NAZWA LOKALNA Ujemna, Koniec
POB Liczba
SOM Ujemna
SOB Koniec
Ujemna: ODE Liczba
ODE Liczba
Koniec:
KONM
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Realizacja programu z makroinstrukcją
Program
ABS X
ŁAD Z
ABS Y
DOD Z
ŁAD Z
STP
X: RST -2
Y: RST 3
Z: RPA
KON
Rozwinięcie programu w PaO
POB X
SOM Ujemna1
SOB Koniec1
Ujemna1: ODE X
ODE X
Koniec1: ŁAD Z
POB Y
SOM Ujemna2
SOB Koniec2
Ujemna2: ODE Y
ODE Y
Koniec2: DOD Z
ŁAD Z
STP
···
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Realizacja programu z makroinstrukcją
Program
ABS X
ŁAD Z
ABS Y
DOD Z
ŁAD Z
STP
X: RST -2
Y: RST 3
Z: RPA
KON
Rozwinięcie programu w PaO
POB X
SOM Ujemna1
SOB Koniec1
Ujemna1: ODE X
ODE X
Koniec1: ŁAD Z
POB Y
SOM Ujemna2
SOB Koniec2
Ujemna2: ODE Y
ODE Y
Koniec2: DOD Z
ŁAD Z
STP
···
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Realizacja programu z makroinstrukcją
Program
ABS X
ŁAD Z
ABS Y
DOD Z
ŁAD Z
STP
X: RST -2
Y: RST 3
Z: RPA
KON
Rozwinięcie programu w PaO
POB X
SOM Ujemna1
SOB Koniec1
Ujemna1: ODE X
ODE X
Koniec1: ŁAD Z
POB Y
SOM Ujemna2
SOB Koniec2
Ujemna2: ODE Y
ODE Y
Koniec2: DOD Z
ŁAD Z
STP
···
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Podprogram - założenia
Podprogramy
pozwalają na modularne pisanie programów
wymagają specjalnych rozkazów
Przekazywanie parametrów między programem a podprogramem
dokonuje się poprzez:
rejestry procesora
wskazany obszar pamięci (zawartość rejestru)
stos
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Dodatkowe rozkazy
Skok do podprogramu
SDP Ad
(WS)–1 → WS, (L) → (WS),
(Ad) → L, A
Powrót z podprogramu
PWR
((WS)) → L, A, (WS) + 1 → WS
Zapis zawartości akumulatora na stos
DNS
(WS)–1 → WS, (Ak) → (WS)
Odczyt zawartości ze stosu do akumulatora
PZS
((WS)) → Ak, (WS) + 1 → WS
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Przykład użycia podprogramu
Zadanie: Policzyć sumę wartości bezwzględnych dwóch komórek pamięci
X i Y, a wynik zapisać w komórce pamięci Z.
Rozwiązanie1 - przekazywanie parametrów przez Akumulator:
X:
Y:
Z:
POB X
SDP Abs
ŁAD Z
POB Y
SDP Abs
DOD Z
ŁAD Z
STP
RST -2
RST 3
RPA
Abs:
Ujemna:
TMP:
dr inż. Alina MOMOT
SOM Ujemna
PWR
ŁAD TMP
ODE TMP
ODE TMP
PWR
RPA
KON
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Przykład użycia podprogramu
Rozwiązanie2 - przekazywanie parametru do podprogramu przez stos:
X:
Y:
Z:
Abs:
POB X
DNS
SDP Abs
ŁAD Z
POB Y
DNS
SDP Abs
DOD Z
ŁAD Z
STP
RST -2
RST 3
RPA
Powrot:
Ujemna:
TMP:
ADRES:
dr inż. Alina MOMOT
PZS
ŁAD ADRES
PZS
ŁAD TMP
SOM Ujemna
POB ADRES
DNS
POB TMP
PWR
ODE TMP
ODE TMP
ŁAD TMP
SOB Powrot
RPA
RPA
KON
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Makroasembler - założenia
Przykład programu z makroinstrukcją
Podprogramy - założenia
Przykład użycia podprogramu
Makrodefinicje i podprogramy - podsumowanie
Makrodefinicje i podprogramy - podsumowanie
Użycie makrodefinicji lub podprogramów:
zwiększa czytelność programu,
usprawnia proces programowania,
ułatwia pielęgnację kodu,
pozwala na modularne pisanie programów,
umożliwia wykorzystanie tego samego kodu w wielu programach.
Użycie makroinstrukcji każdorazowo wstawia zdefiniowaną zawartość,
symbole lokalne są dostępne tylko wewnątrz makrodefinicji,
w programie końcowym tworzone są dla nich unikalne nazwy.
Użycie podprogramów zwykle skraca kod ale wydłuża czas jego realizacji.
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
Segmentacja - założenia
Segmentacja
Podział programu na oddzielne moduły (segmenty) o określonych
zadaniach funkcjonalnych tak, aby umożliwić pracę grupową.
Każdy moduł jest tworzony i tłumaczony (kompilowany) oddzielnie.
Definiuje się więc:
punkty wejścia - etykiety, do których będą odwołania z innych
segmentów,
nazwy zewnętrzne - adresy symboliczne, których etykiety
(deklaracje) występują w innym segmencie.
Do utworzenia kodu końcowego konieczny jest program łączący
(linker).
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
Przykład zastosowania segmentacji
Segment 1
WNZ:
ET
...
SOB ET
...
Segment 2
WPW:
WNZ:
ET:
Segment 3
ET
P
WPW:
...
DOD P
ŁAD TMP
...
WPW - wykaz punktów wejścia
WNZ - wykaz nazw zewnętrznych
dr inż. Alina MOMOT
Języki programowania c.d.
P:
P
...
RST 2
...
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
Program wielosegmentowy
Sumę wartości bezwzględnych X i Y zapisać w komórce Z.
Główny.asm
WNZ Abs
POB X
SDP Abs
ŁAD Z
POB Y
SDP Abs
DOD Z
ŁAD Z
STP
X: RST -2
Y: RST 3
Z: RPA
dr inż. Alina MOMOT
Funkcje.asm
WPW Abs
Abs: SOM Ujemna
PWR
Ujemna: ŁAD TMP
ODE TMP
ODE TMP
PWR
TMP: RPA
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
Program wielosegmentowy - asemblacja
Główny.asm → Główny.obj
Nazwy zewnętrzne są wypełniane zerami, ale jest dołączona informacja,
gdzie wstawić brakujące adresy.
Funkcje.asm → Funkcje.obj
Dołączona jest informacja o punktach wejścia i ich adresach względnych.
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
Program wielosegmentowy - asemblacja
Główny.obj
WNZ: Abs 1 4
0: POB 8
1: SDP 0
2: ŁAD 10
3: POB 9
4: SDP 0
5: DOD 10
6: ŁAD 10
7: STP
8: RST -2
9: RST 3
10: RPA
dr inż. Alina MOMOT
Funkcje.obj
WPW: Abs 0
0: SOM 2
1: PWR
2: ŁAD 6
3: ODE 6
4: ODE 6
5: PWR
6: RPA
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
Program wielosegmentowy - konsolidacja
Główny.obj, Funkcje.obj → Główny.exe
Uzupełnia się brakujące adresy, moduły są relokowane w pamięci
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Program wielosegmentowy - przykład
Program wielosegmentowy - asemblacja
Program wielosegmentowy - konsolidacja
Program wielosegmentowy - konsolidacja
Główny.obj
WNZ: Abs 1 4
0: POB 8
1: SDP 0
2: ŁAD 10
3: POB 9
4: SDP 0
5: DOD 10
6: ŁAD 10
7: STP
8: RST -2
9: RST 3
10: RPA
Funkcje.obj
WPW: Abs 0
0: SOM 2
1: PWR
2: ŁAD 6
3: ODE 6
4: ODE 6
5: PWR
6: RPA
Program zostaje dołączony od komórki 11,
więc wszystkie adresy są przesunięte o 11.
dr inż. Alina MOMOT
Języki programowania c.d.
Główny.exe
0: POB 8
1: SDP 11
2: ŁAD 10
3: POB 9
4: SDP 11
5: DOD 10
6: ŁAD 10
7: STP
8: RST -2
9: RST 3
10: RPA
11: SOM 13
12: PWR
13: ŁAD 17
14: ODE 17
15: ODE 17
16: PWR
17: RPA
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Języki wyższego rzędu - translacja
Translacja to tłumaczenie z jednego języka na inny.
Translator - program tłumaczący kod programu na kod asemblera lub
kod maszynowy.
Typy translatorów:
interpreter - translator programu powodujący natychmiastowe
wykonanie każdej przetłumaczonej sekwencji rozkazów,
kompilator - translator przeznaczony do przekształcania programów
źródłowych w program wynikowy, zakłada się tu istnienie dwóch
procesów: kompilacji i wykonania.
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Interpreter vs Kompilator
Zalety:
– łatwo się uruchamia
– wygodny do usuwania błędów
– raz przetłumaczony program może być
wielokrotnie wykonywany (na różnych
danych, czasami różnych platformach)
Wady:
– dłuższy czas wykonywania (wiele
instrukcji tłumaczonych jest
powtórnie)
– trudniejszy do wykrywania błędów danych
(podczas tłumaczenia wykrywa się tylko
błędy składniowe)
– czasami trudniej się uruchamia
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Etapy kompilacji
1
Analiza programu źródłowego:
leksykalna (sprawdzanie symboli),
syntaktyczna (sprawdzanie konstrukcji).
2
Synteza kodu wynikowego:
generacja kodu,
optymalizacja kodu,
gospodarka pamięcią.
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Algorytm translacji wyrażenia arytmetycznego - założenia
Instrukcja podstawienia jest poprawna
Wyrażenie arytmetyczne zapisane jest w notacji nawiasowej
Znana jest Tablica priorytetów:
operator
ˆ
∗, /
+, −
priorytet
1
2
3
nazwa symboliczna
POT
MNO, DZI
DOD, ODE
Wykorzystywany jest stos i zmienne pomocnicze:
i – wskaźnik szczytu stosu
Si – zawartość i-tej komórki stosu
j – numer zmiennej pomocniczej
Tj – adres symboliczny zmiennej pomocniczej
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Algorytm translacji wyrażenia arytmetycznego
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
i = −1
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
X
i =0
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
=
X
i =1
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
(
=
X
i =2
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
A
(
=
X
i =3
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
−
A
(
=
X
i =4
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
−
A
(
=
X
i =5
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
POB A
ODE B
ŁAD T1
B
−
A
(
=
X
i =5
j =1
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
POB A
ODE B
ŁAD T1
T1
(
=
X
i =3
j =2
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
POB A
ODE B
ŁAD T1
+
T1
(
=
X
i =4
j =2
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
POB A
ODE B
ŁAD T1
C
+
T1
(
=
X
i =5
j =2
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
C
+
T1
(
=
X
i =5
j =2
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
T2
(
=
X
i =3
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
T2
=
X
i =2
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
∗
T2
=
X
i =3
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
(
∗
T2
=
X
i =4
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
A
(
∗
T2
=
X
i =5
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
−
A
(
∗
T2
=
X
i =6
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
B
−
A
(
∗
T2
=
X
i =7
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
B
−
A
(
∗
T2
=
X
i =7
j =3
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
T3
(
∗
T2
=
X
i =5
j =4
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
T3
∗
T2
=
X
i =4
j =4
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
T3
∗
T2
=
X
i =4
j =4
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
T4
=
X
i =2
j =5
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład
↓
X=(A−B+C)∗(A−B)
7
6
5
4
3
2
1
0
T4
=
X
i =2
j =5
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
POB T4
ŁAD X
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Optymalizacja kodu
Optymalizacja kodu przebiega w 3 etapach:
1
Eliminacja sekwencji
ŁAD Tj
POB Tj
2
Wykorzystanie przemienności operacji, czyli
ŁAD Tj
zamiana POB X
na <op.przem.> X
<op.przem.> Tj
Wykorzystanie wspólnych podwyrażeń
- wynik zapisany w zmiennej pomocniczej używany jest w dalszej
części kodu
3
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład optymalizacji kodu
X=(A-B+C)*(A-B)
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
POB T4
ŁAD X
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład optymalizacji kodu
X=(A-B+C)*(A-B)
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
POB T4
ŁAD X
1. etap
POB A
ODE B
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD X
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład optymalizacji kodu
X=(A-B+C)*(A-B)
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
POB T4
ŁAD X
1. etap
2. etap
POB A
ODE B
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD X
POB A
ODE B
DOD C
ŁAD T2
POB A
ODE B
MNO T2
ŁAD X
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład optymalizacji kodu
X=(A-B+C)*(A-B)
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
POB T4
ŁAD X
1. etap
2. etap
3. etap
POB A
ODE B
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD X
POB A
ODE B
DOD C
ŁAD T2
POB A
ODE B
MNO T2
ŁAD X
POB A
ODE B
ŁAD T1
DOD C
ŁAD T2
POB T1
MNO T2
ŁAD X
dr inż. Alina MOMOT
Języki programowania c.d.
Plan wykładu
Asembler maszyny W
Rozszerzenia asemblera maszyny W
Segmentacja
Języki wyższego rzędu - translacja
Wprowadzenie
Algorytm translacji wyrażenia arytmetycznego
Optymalizacja kodu
Przykład optymalizacji kodu
X=(A-B+C)*(A-B)
POB A
ODE B
ŁAD T1
POB T1
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD T4
POB T4
ŁAD X
1. etap
2. etap
3. etap
POB A
ODE B
DOD C
ŁAD T2
POB A
ODE B
ŁAD T3
POB T2
MNO T3
ŁAD X
POB A
ODE B
DOD C
ŁAD T2
POB A
ODE B
MNO T2
ŁAD X
POB A
ODE B
ŁAD T1
DOD C
ŁAD T2
POB T1
MNO T2
ŁAD X
dr inż. Alina MOMOT
Języki programowania c.d.
POB A
ODE B
ŁAD T1
DOD C
MNO T1
ŁAD X

Podobne dokumenty