Randall Hyde asembler.-sztuka-programowania.-wydanie-ii scan.pdf

(23114 KB) Pobierz
889720377.001.png
Spis treci
PODZIKOWANIA ................................................................................... 15
1
WSTP DO JZYKA ASEMBLEROWEGO .................................................... 17
1.1.
Anatomia programu HLA ..........................................................................................18
1.2.
Uruchamianie pierwszego programu HLA ................................................................20
1.3.
Podstawowe deklaracje danych programu HLA .......................................................22
1.4.
Wartoci logiczne ......................................................................................................24
1.5.
Wartoci znakowe .....................................................................................................25
1.6.
Rodzina procesorów 80x86 firmy Intel .....................................................................25
1.7.
Podsystem obsugi pamici .......................................................................................28
1.8.
Podstawowe instrukcje maszynowe .........................................................................31
1.9.
Podstawowe struktury sterujce wykonaniem programu HLA ................................34
1.9.1.
Wyraenia logiczne w instrukcjach HLA .....................................................35
1.9.2.
Instrukcje if..then..elseif..else..endif jzyka HLA .........................................37
1.9.3.
Iloczyn, suma i negacja w wyraeniach logicznych ......................................39
1.9.4.
Instrukcja while ...........................................................................................42
1.9.5.
Instrukcja for ...............................................................................................43
1.9.6.
Instrukcja repeat .........................................................................................44
1.9.7.
Instrukcje break oraz breakif ......................................................................45
1.9.8.
Instrukcja forever ........................................................................................45
1.9.9.
Instrukcje try, exception oraz endtry ..........................................................46
1.10.
Biblioteka standardowa jzyka HLA — wprowadzenie ............................................50
1.10.1. Stae predefiniowane w module stdio .........................................................52
1.10.2. Standardowe wejcie i wyjcie programu ...................................................53
1.10.3. Procedura stdout.newln ..............................................................................54
1.10.4. Procedury stdout.putiN ..............................................................................54
1.10.5. Procedury stdout.putiNSize ........................................................................54
1.10.6. Procedura stdout.put ..................................................................................56
1.10.7. Procedura stdin.getc ...................................................................................58
1.10.8. Procedury stdin.getiN .................................................................................59
1.10.9. Procedury stdin.readLn i stdin.flushInput ....................................................60
1.10.10. Procedura stdin.get .....................................................................................61
1.11.
Jeszcze o ochronie wykonania kodu w bloku try..endtry ......................................... 62
1.11.1.
Zagniedone bloki try..endtry .................................................................. 63
1.11.2.
Klauzula unprotected bloku try..endtry ...................................................... 65
1.11.3.
Klauzula anyexception bloku try..endtry .................................................... 68
1.11.4.
Instrukcja try..endtry i rejestry ................................................................... 68
1.12.
Jzyk asemblerowy a jzyk HLA ............................................................................... 70
1.13.
róda informacji dodatkowych ............................................................................... 71
2
REPREZENTACJA DANYCH ..................................................................... 73
2.1.
Systemy liczbowe ..................................................................................................... 74
2.1.1.
System dziesitny — przypomnienie .......................................................... 74
2.1.2.
System dwójkowy ...................................................................................... 74
2.1.3.
Formaty liczb dwójkowych ........................................................................ 75
2.2.
System szesnastkowy ............................................................................................... 76
2.3.
Organizacja danych ................................................................................................... 79
2.3.1.
Bity ............................................................................................................. 79
2.3.2.
Póbajty ....................................................................................................... 79
2.3.3.
Bajty ............................................................................................................ 80
2.3.4.
Sowa .......................................................................................................... 82
2.3.5.
Podwójne sowa ......................................................................................... 83
2.3.6.
Sowa poczwórne i dugie ........................................................................... 84
2.4.
Operacje arytmetyczne na liczbach dwójkowych i szesnastkowych ........................ 85
2.5.
Jeszcze o liczbach i ich reprezentacji ........................................................................ 86
2.6.
Operacje logiczne na bitach ...................................................................................... 88
2.7.
Operacje logiczne na liczbach dwójkowych i cigach bitów .................................... 91
2.8.
Liczby ze znakiem i bez znaku .................................................................................. 93
2.9.
Rozszerzanie znakiem, rozszerzanie zerem, skracanie, przycinanie ........................ 98
2.10.
Przesunicia i obroty .............................................................................................. 102
2.11.
Pola bitowe i dane spakowane ............................................................................... 107
2.12.
Wprowadzenie do arytmetyki zmiennoprzecinkowej ............................................ 112
2.12.1.
Formaty zmiennoprzecinkowe przyjte przez IEEE ................................ 116
2.12.2.
Obsuga liczb zmiennoprzecinkowych w jzyku HLA .............................. 120
2.13.
Reprezentacja liczb BCD ........................................................................................ 124
2.14.
Znaki ....................................................................................................................... 125
2.14.1.
Zestaw znaków ASCII .............................................................................. 125
2.14.2.
Obsuga znaków ASCII w jzyku HLA ..................................................... 129
2.15.
Zestaw znaków Unicode ........................................................................................ 134
2.16.
róda informacji dodatkowych ............................................................................. 134
3
DOSTP DO PAMICI I JEJ ORGANIZACJA ............................................ 135
3.1.
Tryby adresowania procesorów 80x86 .................................................................. 136
3.1.1.
Adresowanie przez rejestr ....................................................................... 136
3.1.2.
32-bitowe tryby adresowania procesora 80x86 ....................................... 137
6
Spis treci
3.2.
Organizacja pamici fazy wykonania .......................................................................144
3.2.1.
Obszar kodu ..............................................................................................145
3.2.2.
Obszar zmiennych statycznych .................................................................147
3.2.3.
Obszar niemodyfikowalny .........................................................................147
3.2.4.
Obszar danych niezainicjalizowanych .......................................................148
3.2.5.
Atrybut @nostorage .................................................................................149
3.2.6.
Sekcja deklaracji var ..................................................................................150
3.2.7.
Rozmieszczenie sekcji deklaracji danych w programie HLA .....................151
3.3.
Przydzia pamici dla zmiennych w programach HLA ............................................152
3.4.
Wyrównanie danych w programach HLA ...............................................................154
3.5.
Wyraenia adresowe ...............................................................................................157
3.6.
Koercja typów .........................................................................................................159
3.7.
Koercja typu rejestru ...............................................................................................162
3.8.
Pami obszaru stosu oraz instrukcje push i pop ....................................................164
3.8.1.
Podstawowa posta instrukcji push ..........................................................164
3.8.2.
Podstawowa posta instrukcji pop ............................................................166
3.8.3.
Zachowywanie wartoci rejestrów za pomoc instrukcji push i pop .......167
3.9.
Stos jako kolejka LIFO .............................................................................................168
3.9.1.
Pozostae wersje instrukcji obsugi stosu ..................................................170
3.9.2.
Usuwanie danych ze stosu bez ich zdejmowania ......................................172
3.10.
Odwoywanie si do danych na stosie bez ich zdejmowania ..................................174
3.11.
Dynamiczny przydzia pamici — obszar pamici sterty ........................................176
3.12.
Instrukcje inc oraz dec ............................................................................................181
3.13.
Pobieranie adresu obiektu .......................................................................................181
3.14.
róda informacji dodatkowych ..............................................................................182
4
STAE, ZMIENNE I TYPY DANYCH ....................................................... 183
4.1.
Kilka dodatkowych instrukcji: intmul, bound i into .................................................184
4.2.
Deklaracje staych i zmiennych w jzyku HLA ........................................................188
4.2.1.
Typy staych ..............................................................................................192
4.2.2.
Literay staych acuchowych i znakowych ..............................................193
4.2.3.
Stae acuchowe i napisowe w sekcji const .............................................195
4.2.4.
Wyraenia staowartociowe ....................................................................197
4.2.5.
Wielokrotne sekcje const i ich kolejno w programach HLA ..................200
4.2.6.
Sekcja val programu HLA ..........................................................................200
4.2.7.
Modyfikowanie obiektów sekcji val
w wybranym miejscu kodu ródowego programu ..................................201
4.3.
Sekcja type programu HLA .....................................................................................202
4.4.
Typy wyliczeniowe w jzyku HLA ..........................................................................203
4.5.
Typy wskanikowe ..................................................................................................204
4.5.1.
Wskaniki w jzyku asemblerowym .........................................................206
4.5.2.
Deklarowanie wskaników w programach HLA .......................................207
4.5.3.
Stae wskanikowe i wyraenia staych wskanikowych ...........................208
4.5.4.
Zmienne wskanikowe a dynamiczny przydzia pamici ..........................209
4.5.5.
Typowe bdy stosowania wskaników ....................................................209
7
Spis treci
4.6.
Zoone typy danych .............................................................................................. 214
4.7.
acuchy znaków ................................................................................................... 214
4.8.
acuchy w jzyku HLA ......................................................................................... 217
4.9.
Odwoania do poszczególnych znaków acucha ................................................... 224
4.10.
Modu strings biblioteki standardowej HLA i procedury manipulacji acuchami .... 226
4.11.
Konwersje wewntrzpamiciowe .......................................................................... 239
4.12.
Zbiory znaków ....................................................................................................... 240
4.13.
Implementacja zbiorów znaków w jzyku HLA ..................................................... 241
4.14.
Literay, stae i wyraenia zbiorów znaków w jzyku HLA .................................... 243
4.15.
Obsuga zbiorów znaków w bibliotece standardowej HLA ................................... 245
4.16.
Wykorzystywanie zbiorów znaków w programach HLA ....................................... 249
4.17.
Tablice .................................................................................................................... 250
4.18.
Deklarowanie tablic w programach HLA ............................................................... 251
4.19.
Literay tablicowe ................................................................................................... 252
4.20.
Odwoania do elementów tablicy jednowymiarowej ............................................. 254
4.21.
Porzdkowanie tablicy wartoci ............................................................................. 255
4.22.
Tablice wielowymiarowe ........................................................................................ 257
4.22.1.
Wierszowy ukad elementów tablicy ........................................................ 258
4.22.2.
Kolumnowy ukad elementów tablicy ...................................................... 262
4.23.
Przydzia pamici dla tablic wielowymiarowych ..................................................... 263
4.24.
Odwoania do elementów tablic wielowymiarowych w jzyku asemblerowym ..... 266
4.25.
Rekordy (struktury) ................................................................................................ 267
4.26.
Stae rekordowe ..................................................................................................... 270
4.27.
Tablice rekordów ................................................................................................... 271
4.28.
Wykorzystanie tablic i rekordów w roli pól rekordów .......................................... 272
4.29.
Wyrównanie pól w ramach rekordu ...................................................................... 276
4.30.
Wskaniki na rekordy ............................................................................................. 278
4.31.
Unie ........................................................................................................................ 279
4.32.
Unie anonimowe .................................................................................................... 282
4.33.
Typy wariantowe .................................................................................................... 283
4.34.
Przestrzenie nazw .................................................................................................. 284
4.35.
Tablice dynamiczne w jzyku asemblerowym ....................................................... 288
4.36.
róda informacji dodatkowych ............................................................................. 290
5
PROCEDURY I MODUY ........................................................................ 291
5.1.
Procedury ............................................................................................................... 292
5.2.
Zachowywanie stanu systemu ................................................................................ 294
5.3.
Przedwczesny powrót z procedury ....................................................................... 299
5.4.
Zmienne lokalne ..................................................................................................... 300
5.5.
Symbole lokalne i globalne obiektów innych ni zmienne ...................................... 306
5.6.
Parametry ............................................................................................................... 306
5.6.1.
Przekazywanie przez warto .................................................................. 307
5.6.2.
Przekazywanie przez adres ...................................................................... 311
8
Spis treci
Zgłoś jeśli naruszono regulamin