Programowanie między asemblerem a językiem C Podstawy oprogramowania wbudowanego
Kategoria: Języki programowania, Asembler
Wydawnictwo: READ ME
Ilość stron: 300
ISBN: 83-7243-412-3
Książka "Programowanie między asemblerem a językiem C Podstawy oprogramowania wbudowanego" stanowi znakomitą alternatywę dla tradycyjnych tekstów uniwersyteckich na temat organizacji komputera i programowania w języku asemblera. Asembler występuje w niej tak, jak jest on najczęściej wykorzystywany w praktyce - jako narzędzie do implementowania niewielkich, szybkich i wyspecjalizowanych procedur wywoływanych z programu głównego napisanego w języku wysokiego poziomu, takiego jak C.
Na bazie oprogramowania osadzonego książka wprowadza techniki programowania wielowątkowego, systemy z wywłaszczaniem i bez wywłaszczania , dzielone zasoby oraz szeregowanie, dostarczając w ten sposób solidne podstawy do dalszej nauki systemów operacyjnych, systemów czasu rzeczywistego i projektowania opartego na mikroprocesorach.
Spis treści:
Przedmowa
Rozdział 1 Wstęp
- 1.1 Co to jest system wbudowany?
- 1.2 Czym wyróżnia się projektowanie oprogramowania wbudowanego?
- 1.3 Co oznacza "system czasu rzeczywistego"?
- 1.4 Co oznacza "wielozadaniowość"?
- 1.5 Jaka jest moc procesorów wbudowanych?
- 1.6 Jakie języki programowania są wykorzystywane?
- 1.7 Co to jest "jądro czasu rzeczywistego"?
- 1.8 Na czym polega wyjątkowość tworzenia aplikacji wbudowanej?
- 1.9 Jak duże są typowe programy wbudowane?
- 1.10 Oprogramowanie używane w tej książce
- Zadania
Rozdział 2 Reprezentacja danych
- 2.1 Liczby dwójkowe o stałej precyzji
- 2.1.1 Pozycyjne systemy liczbowe
- 2.1.2 Konwersja zapisu binarnego na dziesiętny
- 2.1.3 Konwersja zapisu dziesiętnego na binarny
- 2.1.4 Zliczanie
- 2.1.5 Stała precyzja i przekraczanie zakresu
- 2.1.6 Reprezentacja heksadecymalna
- 2.2 Dwójkowa reprezentacja liczb całkowitych
- 2.2.1 Liczby całkowite ze znakiem
- 2.2.2 Dodatnia i ujemna reprezentacja tej samej wartości bezwzględnej
- 2.2.3 Interpretowanie wartości uzupełnienia dwójkowego liczby
- 2.2.4 Więcej o zakresie i nadmiarze
- 2.2.5 Uzupełnienie dwójkowe i złożoność sprzętowa
- 2.3 Binarna reprezentacja liczb rzeczywistych
- 2.3.1 Reprezentacja stałoprzecinkowa
- 2.3.2 Zapis stałoprzecinkowy z użyciem uniwersalnego formatu 16.16
- 2.3.3 Zapis stałoprzecinkowy z użyciem uniwersalnego formatu 32.32
- 2.3.4 Reprezentacja zmiennoprzecinkowa
- 2.4 Reprezentacja tekstu przy użyciu kodu ASCII
- 2.5 Liczby dziesiętne kodowane binarnie (BCD)
- Zadania
Rozdział 3 Maksymalne wykorzystywanie C
- 3.1 Typy całkowite
- 3.2 Mieszane typy danych
- 3.3 Pomocne deklaracje typedef i define
- 3.4 Operowanie bitami w pamięci
- 3.4.1 Sprawdzanie bitów
- 3.4.2 Ustawianie, zerowanie i odwracanie bitów
- 3.4.3 Wyciąganie bitów
- 3.4.4 Wstawianie bitów
- 3.5 Operowanie bitami w portach we/wy
- 3.5.1 Porty we/wy tylko do zapisu
- 3.5.2 Podział portów ze względu na pisanie i czytanie
- 3.5.3 Podział portów ze względu na sekwencyjny dostęp
- 3.5.4 Podział portów ze względu na bity w zapisywanych danych
- 3.6 Dostęp do urządzeń we/wy mapowanych w pamięci
- 3.6.1 Dostęp do danych przy użyciu wskaźnika
- 3.6.2 Tablice, wskaźniki i operator "adres"
- 3.7 Struktury
- 3.7.1 Struktury upakowane
- 3.7.2 Pola bitowe
- 3.8 Dostęp wariantowy
- 3.8.1 Rzutowanie adresu obiektu
- 3.8.2 Korzystanie z unii
- Zadania
Rozdział 4 Spojrzenie programisty na budowę komputera
- 4.1 Pamięć
- 4.2 Jednostka centralna (CPU)
- 4.2.1 Jednostka arytmetyczna i logiczna (ALU)
- 4.2.2 Pozostałe rejestry
- 4.2.3 Jednostka sterująca
- 4.3 Wejście/wyjście (we/wy)
- 4.4 Wprowadzenie do architektury Intela
- 4.4.1 Formaty instrukcji
- 4.4.2 Argumenty instrukcji
- 4.4.3 Ograniczenia dotyczące argumentów
- 4.4.4 Rejestry
- 4.4.5 Stos
- 4.5 Architektura trybu rzeczywistego procesorów Intela
- 4.5.1 Adresowanie segmentowe
- 4.5.2 Tryby adresowania
- 4.6 Architektura trybu chronionego procesorów Intela
- 4.6.1 Rejestry segmentowe i Globalna tablica deskryptorów
- 4.6.2 Płaski model pamięci
- 4.6.3 Tryby adresowania
- 4.7 Prefiksy przesłaniające argumenty i rozmiar adresu
- 4.8 Instrukcje procesorów Intela do przetwarzania danych
- 4.8.1 Instrukcje przenoszenia danych, instrukcje stosu i instrukcje we/wy
- 4.8.2 Instrukcje arytmetyczne
- 4.8.3 Instrukcje działające na bitach
- 4.8.4 Instrukcje przesunięcia bitów
- Zadania
Rozdział 5 Łączenie języka C i asemblera
- 5.1 Programowanie w asemblerze
- 5.2 Konwencje korzystania z rejestrów
- 5.3 Typowe użycie opcji adresowania
- 5.3.1 Dostęp do danych, których adres jest stałą
- 5.3.2 Dostęp do danych, których adres jest zmienną
- 5.4 Instrukcje wyboru kolejności
- 5.4.1 Warunki złożone
- 5.4.2 Instrukcje if-then-else
- 5.4.3 Budowanie pętli
- 5.4.4 Szybsze pętle przy użyciu instrukcji łańcuchowych
- 5.5 Wywoływanie procedur i powracanie
- 5.6 Przekazywanie parametrów
- 5.7 Pobieranie parametrów
- 5.8 Wszystko jest przekazywane przez wartość
- 5.9 Zmienne tymczasowe
- Zadania
Rozdział 6 Programowanie wejścia/wyjścia
- 6.1 Instrukcje we/wy procesorów Intela
- 6.2 Synchronizacja, prędkość przesyłania i opóźnienie
- 6.3 Pętle oczekujące z odpytywaniem
- 6.4 We/wy sterowane przerwaniami
- 6.4.1 Reakcja sprzętowa
- 6.4.2 Procedura obsługi przerwania
- 6.4.3 Programowalne kontrolery przerwań
- 6.4.4 Bufory i kolejki
- 6.4.5 Pisanie procedur obsługi przerwań w asemblerze
- 6.4.6 Pisanie procedur obsługi przerwań w C
- 6.4.7 Przerwania niemożliwe do zamaskowania
- 6.4.8 Przerwania programowe
- 6.4.9 Wyjątki
- 6.5 DMA - bezpośredni dostęp do pamięci
- 6.5.1 Podwójne buforowanie
- 6.6 Porównanie metod
- Zadania
Rozdział 7 Oprogramowanie współbieżne
- 7.1 Systemy wielopoziomowe
- 7.1.1 Stan wątku i serializowanie
- 7.1.2 Zarządzanie opóźnieniem
- 7.1.3 Zapobieganie przepełnieniu przerwań
- 7.1.4 Przenoszenie działań na drugi plan
- 7.2 Programowanie wielowątkowe
- 7.2.1 Współbieżne wykonywanie niezależnych wątków
- 7.2.2 Przełączanie kontekstu
- 7.2.3 Wielozadaniowość bez wywłaszczania (kooperacyjna)
- 7.2.4 Wielozadaniowość z wywłaszczaniem
- 7.3 Zasoby dzielone i sekcje krytyczne
- 7.3.1 Wyłączanie przerwań
- 7.3.2 Wyłączanie przełączania zadań
- 7.3.3 Blokady wirujące
- 7.3.4 Muteksy
- 7.3.5 Semafory
- Zadania
Rozdział 8 Szeregowanie zadań
- 8.1 Stany wątków
- 8.2 Wątki oczekujące
- 8.3 Przełączanie kontekstu
- 8.4 Szeregowanie zadań metodą cykliczną
- 8.5 Szeregowanie oparte na priorytetach
- 8.5.1 Inwersja priorytetów
- 8.5.2 Protokół PIP
- 8.5.3 Protokół PCP
- 8.6 Przypisywanie priorytetów
- 8.6.1 Szeregowanie sterowane terminami
- 8.6.2 Szeregowanie na podstawie RMA
- 8.7 Zakleszczenie
- 8.8 Kontrolne liczniki zegarowe
- Zadania
Rozdział 9 Zarządzanie pamięcią
- 9.1 Obiekty w języku C
- 9.2 Zasięg
- 9.2.1 Udoskonalanie zasięgu lokalnego
- 9.2.2 Udoskonalanie zasięgu globalnego
- 9.3 Czas życia
- 9.4 Alokacja automatyczna
- 9.4.1 Klasa pamięci "Rejestr"
- 9.5 Alokacja statyczna
- 9.6 Trzy programy pomagające odróżnić alokację statyczną od automatycznej
- 9.6.1 Tworzenie obiektu
- 9.6.2 Inicjalizacja obiektu
- 9.6.3 Usuwanie obiektu
- 9.7 Alokacja dynamiczna
- 9.7.1 Fragmentacja
- 9.7.2 Pule alokacji pamięci
- 9.8 Alokacja automatyczna o zmiennym rozmiarze (alloca)
- 9.8.1 Tablice o zmiennym rozmiarze
- 9.9 Funkcje rekurencyjne a alokacja pamięci
- Zadania
Rozdział 10 Pamięć dzielona
- 10.1 Rozpoznawanie obiektów dzielonych
- 10.1.1 Dzielone dane globalne
- 10.1.2 Dzielone dane prywatne
- 10.1.3 Funkcje dzielone
- 10.2 Funkcje wielobieżne
- 10.3 Dane "tylko do odczytu"
- 10.3.1 Kwalifikator typu "const"
- 10.4 Odradzane metody kodowania
- 10.4.1 Funkcje, które zachowują wewnętrzny stan lokalnych obiektów statycznych
- 10.4.2 Funkcje zwracające adres lokalnego obiektu statycznego
- 10.5 Dostęp do pamięci dzielonej
- 10.5.1 Konsekwencje wielkości słowa procesora
- 10.5.2 Dostęp typu "tylko odczyt" i "tylko zapis"
- 10.5.3 Kwalifikator typu "volatile"
- Zadania
Rozdział 11 Inicjalizacja systemu
- 11.1 Organizacja pamięci
- 11.2 Procesor centralny
- 11.2.1 Ustawianie płaskiego modelu pamięci
- 11.2.2 Zmiana trybu na chroniony
- 11.3 Środowisko runtime języka C
- 11.3.1 Kopiowanie z pamięci ROM do RAM
- 11.3.2 Zerowanie danych statycznych niezainicjalizowanych
- 11.3.3 Konfigurowanie stogu
- 11.4 Zegar systemowy
- 11.4.1 Zegar 0: takt zegara
- 11.4.2 Zegar 1: odświeżanie pamięci
- 11.4.3 Zegar 2: częstotliwość głośnika
- 11.5 System przerwań
- 11.5.1 Inicjalizacja IDT
- 11.5.2 Inicjalizacja urządzeń PIC 8259
- 11.5.3 Instalowanie nowej procedury obsługi przerwania (ISR)
Dodatek A Zawartość CD-ROM-u
Dodatek B Kompilator C/C++ DJGPP
- Instalacja
- Kompilacja
- Dokumentacja online
Dodatek C Asembler NASM
- Instalacja
- Uruchamianie NASM
Dodatek D Projekty programów
- Pliki z dysku CD wymagane przez wszystkie aplikacje
- Pliki z dysku CD wymagane przez aplikacje wielowątkowe bez wywłaszczania
- Kompilacja i asemblacja aplikacji wbudowanej
- Łączenie aplikacji wbudowanej
- Uruchamianie aplikacji wbudowanej
- Program 1: Poznawanie narzędzi kompilatora DJGPP
- Program 2: Korzystanie ze stałoprzecinkowych liczb rzeczywistych
- Program 3: Używanie makr i argumentów upakowanych
- Program 4: korzystanie z plików "makefile"
- Program 5: Kodowanie w asemblerze mnożenia o zwiększonej precyzji
- Program 6: Kodowanie w asemblerze dzielenia o zwiększonej precyzji
- Program 7: Pętla oczekująca z odpytywaniem oraz wejście/wyjście sterowane przerwaniami
- Program 8: Prosta aplikacja wielowątkowa bez wywłaszczania
- Program 9: Jądro z wywłaszczaniem i zasoby dzielone
- Program 10: Unikanie nieograniczonej inwersji priorytetów
- Program 11: Unikanie zakleszczenia
Dodatek E Biblioteka libepc
- Organizacja pamięci i inicjalizacja
- Funkcje ekranowe (display.c)
- Funkcje okienkowe (window.c)
- Funkcje klawiaturowe (keyboard.c)
- Funkcje głośnikowe (speaker.c)
- Funkcje zegarowe (timer.c, cycles.asm)
- Funkcje dostępu do wektora przerwania (init-idt.c)
- Funkcje dynamicznej alokacji pamięci (heap.c)
- Funkcje stałoprzecinkowe (fixedpt.asm)
- Skoki między funkcjami (setjmp.asm)
- Inne funkcje (init-crt.c)
Dodatek F Program wstępnego ładowania

Podobne książki:
Najpopularniejsze kategorie książek:
Bazy danych, Bezpieczeństwo Hakerzy, Biznes SAP R/3, Edytory tekstu, GIS System Informacji Geograficznej, Grafika użytkowa Design, Hardware Elektronika, Informatyka, Informatyka w szkole Edukacja, Internet, Inżynieria oprogramowania Algorytmy, Języki programowania, Komputer, Literatura naukowa, Macromedia, Microsoft, Multimedia, Obsługa komputera, Open Source, Oprogramowanie, Programowanie gier i grafiki, Programy inżynierskie, Programy matematyczne Matematyka, Serwery, Sieci, Systemy, Systemy operacyjne, Teleinformatyka, Telekomunikacja, Tworzenie stron WWW, Uczniowie i Studenci
Linki partnerskie:mikrokamery, tworzenie stron internetowych, niedoczynność tarczycy, odzież ciążowa, pc