Profesjonalne programowanie Czesc 1 Zrozumiec komputer.pdf
(
480 KB
)
Pobierz
Profesjonalne programowanie. Część 1. Zrozumieć komputer
IDZ DO
PRZYK£ADOW
Y ROZDZIA£
SPIS TREŒCI
Profesjonalne programowanie.
Czêœæ 1. Zrozumieæ komputer
KATALOG KSI¥¯EK
Autor: Randall Hyde
T³umaczenie: Tomasz ¯mijewski
ISBN: 83-7361-859-7
Tytu³ orygina³
u:
Write Great Code.
Volume 1: Understanding the Machine
Format: B5, stron: 392
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Chcesz zostaæ programist¹ doskona³ym?
Zacznij od poznania szczegó³ów dzia³ania komputera
Zapis wartoœci liczbowych oraz arytmetyka zmiennoprzecinkowa i binarna
Organizacja dostêpu do pamiêci komputera
Proces wykonywania programu oraz operacje wejœcia i wyjœcia
Kod napisany przez profesjonalnego programistê jest wydajny i efektywny.
Aby tworzyæ wydajny kod, nale¿y poznaæ architekturê komputera i sposób, w jaki
program jest wykonywany. Zrozumienie tego, w jaki sposób komputer realizuje kolejne
instrukcje programu i jak s³owa kluczowe jêzyków wysokiego poziomu s¹ przenoszone
na rozkazy procesora, jest kluczem do napisania kodu, który po skompilowaniu
da szybko i bezb³êdnie dzia³aj¹cy program.
„Profesjonalne programowanie. Czêœæ 1. Zrozumieæ komputer” to pierwszy tom serii
ksi¹¿ek przeznaczonych dla tych programistów, którzy chc¹ podnieœæ swoje
kwalifikacje. Przedstawia wewnêtrzn¹ architekturê komputera od strony, której
znajomoœæ jest niezbêdna programiœcie. Opisuje sposoby zapisu wartoœci liczbowych
i tekstów, dzia³ania na liczbach binarnych i zmiennoprzecinkowych oraz logikê Boole’a.
Czytaj¹c tê ksi¹¿kê, dowiesz siê, w jaki sposób procesor przetwarza rozkazy asemblera,
jak odbywa siê dostêp do danych zapisanych w pamiêci oraz jak przesy³ane s¹ dane
do i z urz¹dzeñ zewnêtrznych.
Zapis liczb w systemie binarnym, ósemkowym i szesnastkowym
Dzia³ania na liczbach binarnych i zmiennoprzecinkowych
Sposoby reprezentacji danych znakowych
Organizacja pamiêci i tryby adresowania
Z³o¿one typy danych
Projektowanie uk³adów cyfrowych i logika Boole’a
Architektura procesora i rozkazy asemblera
Operacje wejœcia i wyjœcia
Jeœli chcesz, aby napisane przez Ciebie oprogramowanie budzi³o podziw, koniecznie
przeczytaj tê ksi¹¿kê.
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Podziękowania .................................................................................. 9
Rozdział 1. Co trzeba wiedzieć o programowaniu doskonałym ............................ 11
1.1. Seria książek „Profesjonalne programowanie” .................................................... 11
1.2. O czym jest ta książka ......................................................................................... 12
1.3. Wymagania wobec Czytelnika ............................................................................ 15
1.4. Cechy kodu doskonałego ..................................................................................... 15
1.5. Wymagane środowisko ........................................................................................ 16
1.6. Dalsze informacje ................................................................................................ 17
Rozdział 2. Zapis liczb ...................................................................................... 19
2.1. Czym jest liczba? ................................................................................................. 19
2.2. Systemy liczbowe ................................................................................................ 20
2.2.1. Dziesiętny pozycyjny system liczbowy ................................................... 21
2.2.2. Podstawa .................................................................................................. 22
2.2.3. Binarny system liczbowy ......................................................................... 23
2.2.4. Szesnastkowy system liczbowy ............................................................... 24
2.2.5. Liczby ósemkowe .................................................................................... 26
2.3. Konwersja między liczbą a tekstem ..................................................................... 28
2.4. Zapis liczb całkowitych ....................................................................................... 29
2.4.1. Bity .......................................................................................................... 29
2.4.2. Łańcuchy bitowe ...................................................................................... 30
2.5. Liczby ze znakiem i bez znaku ............................................................................ 32
2.6. Pewne przydatne cechy liczb binarnych .............................................................. 34
2.7. Rozszerzenie znakiem, uzupełnienie zerami i zawężenie .................................... 35
2.8. Nasycenie ............................................................................................................ 38
2.9. Zapis dziesiętny kodowany binarnie (BCD) ........................................................ 39
2.10. Zapis stałopozycyjny ........................................................................................... 40
2.11. Skalowane formaty liczbowe ............................................................................... 43
2.12. Zapis wymierny ................................................................................................... 45
2.13. Więcej informacji ................................................................................................ 45
Rozdział 3. Arytmetyka binarna i działania na bitach ......................................... 47
3.1. Działania arytmetyczne na liczbach dwójkowych i szesnastkowych ................... 47
3.1.1. Dodawanie wartości binarnych ................................................................ 48
3.1.2. Odejmowanie liczb binarnych .................................................................. 49
3.1.3. Mnożenie wartości binarnych .................................................................. 50
3.1.4. Dzielenie wartości binarnych ................................................................... 51
3.2. Operacje logiczne na bitach ................................................................................. 52
3.3. Operacje logiczne na liczbach binarnych i ciągach bitów .................................... 54
4
Profesjonalne programowanie. Część 1. Zrozumieć komputer
3.4. Przydatne operacje bitowe ................................................................................... 55
3.4.1. Sprawdzanie poszczególnych bitów łańcucha za pomocą operatora AND ....55
3.4.2. Sprawdzanie, czy grupa bitów zawiera same zera ...........................................56
3.4.3. Porównywanie zestawu bitów z łańcuchem binarnym ....................................56
3.4.4. Tworzenie liczników modulo n za pomocą operacji AND ..............................57
3.5. Przesunięcia i rotacje ........................................................................................... 58
3.6. Pola bitowe i pakowanie danych .......................................................................... 61
3.7. Pakowanie i rozpakowywanie danych ................................................................. 64
3.8. Więcej informacji ................................................................................................ 68
Rozdział 4. Zapis zmiennopozycyjny .................................................................. 69
4.1. Wprowadzenie do arytmetyki zmiennopozycyjnej .............................................. 69
4.2. Formaty zmiennopozycyjne IEEE ....................................................................... 74
4.2.1. Zmiennopozycyjny format pojedynczej precyzji ..................................... 75
4.2.2. Format zmiennopozycyjny o podwójnej precyzji .................................... 77
4.2.3. Format zmiennopozycyjny zwiększonej precyzji ..................................... 77
4.3. Normalizacja i wartości nienormalizowane ......................................................... 78
4.4. Zaokrąglanie ........................................................................................................ 79
4.5. Specjalne wartości zmiennopozycyjne ................................................................ 80
4.6. Wyjątki obliczeń zmiennopozycyjnych ............................................................... 82
4.7. Działania zmiennopozycyjne ............................................................................... 82
4.7.1. Zapis liczb zmiennopozycyjnych ............................................................. 83
4.7.2. Dodawanie i odejmowanie zmiennopozycyjne ........................................ 83
4.7.3. Mnożenie i dzielenie zmiennopozycyjne ................................................. 93
4.8. Więcej informacji ................................................................................................ 99
Rozdział 5. Dane znakowe .............................................................................. 101
5.1. Dane znakowe .................................................................................................... 101
5.1.1. Zestaw znaków ASCII ........................................................................... 101
5.1.2. Zestaw znaków EBCDIC ....................................................................... 104
5.1.3. Dwubajtowe zestawy znaków ................................................................ 105
5.1.4. Zestaw znaków Unicode ........................................................................ 106
5.2. Łańcuchy znakowe ............................................................................................ 108
5.2.1. Formaty łańcuchów znakowych ............................................................. 108
5.2.2. Rodzaje łańcuchów — statyczne, pseudodynamiczne i dynamiczne ..... 112
5.2.3. Zliczanie odwołań do łańcucha .............................................................. 114
5.2.4. Łańcuchy w Delphi i Kyliksie ................................................................ 114
5.2.5. Tworzenie własnych formatów łańcuchów ............................................ 115
5.3. Zbiory znaków ................................................................................................... 115
5.3.1. Zbiory znaków w formie zbioru przynależności .................................... 115
5.3.2. Listowa reprezentacja zbiorów znaków ................................................. 117
5.4. Definiowanie własnego zestawu znaków ........................................................... 117
5.4.1. Tworzenie wydajnego zestawu znaków ................................................. 118
5.4.2. Grupowanie znaków odpowiadających cyfrom ..................................... 120
5.4.3. Grupowanie liter .................................................................................... 120
5.4.4. Porównywanie liter ................................................................................ 122
5.4.5. Inne grupowania znaków ....................................................................... 123
5.5. Dodatkowe informacje ....................................................................................... 124
Rozdział 6. Organizacja pamięci i dostęp do niej ............................................. 127
6.1. Podstawowe elementy systemu .......................................................................... 127
6.1.1. Magistrala systemowa ............................................................................ 128
6.2. Fizyczna organizacja pamięci ............................................................................ 130
6.2.1. 8-bitowe magistrale danych ................................................................... 132
6.2.2. 16-bitowe magistrale danych ................................................................. 133
6.2.3. 32-bitowe magistrale danych ................................................................. 134
Spis treści
5
6.2.4. Magistrale 64-bitowe ............................................................................. 136
6.2.5. Dostęp do pamięci w procesorach innych niż 80x86 ............................. 136
6.3. Kolejność bajtów ............................................................................................... 136
6.4. Zegar systemowy ............................................................................................... 141
6.4.1. Dostęp do pamięci a zegar systemowy ................................................... 142
6.4.2. Stany oczekiwania ................................................................................. 143
6.4.3. Pamięć podręczna .................................................................................. 145
6.5. Dostęp procesora do pamięci ............................................................................. 148
6.5.1. Bezpośredni tryb adresowania pamięci .................................................. 149
6.5.2. Tryb adresowania pośredniego ............................................................... 149
6.5.3. Tryb adresowania indeksowanego ......................................................... 150
6.5.4. Skalowane indeksowane tryby adresowania .......................................... 151
6.6. Dodatkowe informacje ....................................................................................... 151
Rozdział 7. Złożone typy danych i obiekty w pamięci ....................................... 153
7.1. Typy wskaźnikowe ............................................................................................ 153
7.1.1. Implementacja wskaźników ................................................................... 154
7.1.2. Wskaźniki i dynamiczna alokacja pamięci ............................................. 155
7.1.3. Działania na wskaźnikach — arytmetyka wskaźników .......................... 155
7.2. Tablice ............................................................................................................... 159
7.2.1. Deklaracje tablic .................................................................................... 160
7.2.2. Reprezentacja tablic w pamięci .............................................................. 162
7.2.3. Dostęp do elementów tablicy ................................................................. 163
7.2.4. Tablice wielowymiarowe ....................................................................... 164
7.3. Rekordy (struktury) ........................................................................................... 170
7.3.1. Rekordy w Pascalu i Delphi ................................................................... 170
7.3.2. Rekordy w C i C++ ................................................................................ 171
7.3.3. Rekordy w HLA ..................................................................................... 171
7.3.4. Zapis rekordów w pamięci ..................................................................... 171
7.4. Unie ................................................................................................................... 174
7.4.1. Unie w C i C++ ...................................................................................... 174
7.4.2. Unie w Pascalu, Delphi i Kyliksie ......................................................... 174
7.4.3. Unie w asemblerze HLA ........................................................................ 175
7.4.4. Unie w pamięci ...................................................................................... 176
7.4.5. Inne zastosowania unii ........................................................................... 176
7.5. Dodatkowe informacje ....................................................................................... 177
Rozdział 8. Logika boolowska i projektowanie cyfrowe .................................... 179
8.1. Algebra Boole’a ................................................................................................. 179
8.1.1. Operatory boolowskie ............................................................................ 179
8.1.2. Prawa algebry boolowskiej .................................................................... 180
8.1.3. Priorytety operatorów boolowskich ....................................................... 181
8.2. Funkcje logiczne i tabele prawdy ...................................................................... 182
8.3. Numery funkcji .................................................................................................. 183
8.4. Algebraiczne przekształcanie wyrażeń logicznych ............................................ 185
8.5. Formy kanoniczne ............................................................................................. 186
8.5.1. Forma kanoniczna sumy termów minimalnych a tabele prawdy ............ 187
8.5.2. Algebraiczne wyprowadzanie formy kanonicznej
sumy termów minimalnych .................................................................... 189
8.5.3. Forma kanoniczna jako iloczyn termów maksymalnych ........................ 189
8.6. Upraszczanie funkcji logicznych ....................................................................... 190
8.7. Ale co to wszystko ma wspólnego z komputerami? .......................................... 197
8.7.1. Równoważność układów elektronicznych i funkcji logicznych ............. 198
8.7.2. Obwody złożone .................................................................................... 199
8.7.3. Sterowanie sekwencyjne i zegarowe ...................................................... 204
8.8. Dodatkowe informacje ....................................................................................... 208
6
Profesjonalne programowanie. Część 1. Zrozumieć komputer
Rozdział 9. Architektura procesora ................................................................. 209
9.1. Podstawy budowy procesora ............................................................................. 209
9.2. Dekodowanie i wykonywanie instrukcji — logika przypadku a mikrokod ....... 211
9.3. Wykonywanie instrukcji krok po kroku ............................................................. 213
9.3.1. Instrukcja mov ....................................................................................... 213
9.3.2. Instrukcja add ......................................................................................... 215
9.3.3. Instrukcja jnz .......................................................................................... 217
9.3.4. Instrukcja loop ....................................................................................... 218
9.4. Równoległość — klucz do przyspieszenia ......................................................... 218
9.4.1. Kolejka wstępnego pobrania .................................................................. 222
9.4.2. Okoliczności ograniczające wydajność kolejki wstępnego pobrania ..... 225
9.4.3. Potoki — jednoczesne wykonywanie wielu instrukcji ........................... 226
9.4.4. Bufory instrukcji — wiele dróg do pamięci ........................................... 230
9.4.5. Zagrożenia związane z potokami ........................................................... 231
9.4.6. Działanie superskalarne — równoległe wykonywanie instrukcji ........... 233
9.4.7. Wykonywanie kodu bez zachowania kolejności .................................... 235
9.4.8. Zmiana nazw rejestrów .......................................................................... 235
9.4.9. Architektura z bardzo długim słowem instrukcji (VLIW) ...................... 236
9.4.10. Przetwarzanie równoległe ...................................................................... 237
9.4.11. Wieloprocesorowość .............................................................................. 238
9.5. Dodatkowe informacje ....................................................................................... 239
Rozdział 10. Konstrukcja zbioru instrukcji ......................................................... 241
10.1. Dlaczego projekt zbioru instrukcji jest ważny ................................................... 241
10.2. Podstawowe cele projektowe zestawu instrukcji ............................................... 243
10.2.1. Dobór długości kodu instrukcji .............................................................. 245
10.2.2. Plany na przyszłość ................................................................................ 247
10.2.3. Dobór instrukcji ..................................................................................... 247
10.2.4. Przypisywanie instrukcjom kodów ........................................................ 248
10.3. Hipotetyczny procesor Y86 ............................................................................... 248
10.3.1. Ograniczenia Y86 .................................................................................. 249
10.3.2. Instrukcje Y86 ........................................................................................ 249
10.3.3. Tryby adresowania Y86 ......................................................................... 251
10.3.4. Kodowanie instrukcji Y86 ..................................................................... 252
10.3.5. Przykłady kodowania instrukcji Y86 ..................................................... 254
10.3.6. Rozszerzanie zbioru instrukcji Y86 ....................................................... 257
10.4. Kodowanie instrukcji 80x86 .............................................................................. 259
10.4.1. Kodowanie operandów instrukcji .......................................................... 260
10.4.2. Kodowanie instrukcji add — kilka przykładów ..................................... 266
10.4.3. Stałe jako operandy ................................................................................ 268
10.4.4. Kodowanie operandów 8-, 16- i 32-bitowych ........................................ 269
10.4.5. Alternatywne kodowanie instrukcji ....................................................... 270
10.5. Znaczenie projektu zbioru instrukcji dla programisty ........................................ 270
10.6. Więcej informacji .............................................................................................. 271
Rozdział 11. Architektura pamięci i jej organizacja ............................................ 273
11.1. Hierarchia pamięci .................................................................................................... 273
11.2. Jak działa hierarchia pamięci .................................................................................... 276
11.3. Względna wydajność podsystemów pamięci .......................................................... 277
11.4. Budowa pamięci podręcznej .................................................................................... 279
11.4.1. Pamięć odwzorowywana bezpośrednio ..........................................................280
11.4.2. Pamięć w pełni powiązana ..............................................................................281
11.4.3. Pamięć powiązana n-krotnie ...........................................................................281
11.4.4. Dobieranie schematu pamięci podręcznej do rodzaju dostępu do danych ....282
Plik z chomika:
kronos78
Inne pliki z tego folderu:
Asembler dla procesorow Intel Vademecum profesjonalisty.pdf
(400 KB)
Asembler cwiczenia praktyczne.pdf
(358 KB)
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe.pdf
(829 KB)
Architektura oprogramowania Metody oceny oraz analiza przypadkow.pdf
(429 KB)
Aplikacje w Visual C++ 2005 Przyklady.pdf
(296 KB)
Inne foldery tego chomika:
!!!!!!!!ze słowackiego radia, niektore opisanie, inne nie
# - Wzory CV
▶ Porady remontowo - budowlane
▶ Remont domu - poradnik
• AGD - kody błędów pralek automatycznych
Zgłoś jeśli
naruszono regulamin