Asembler dla procesorów ARM. Podręcznik programisty - ebook
Asembler dla procesorów ARM. Podręcznik programisty - ebook
Przewodnik programisty!
Jeszcze do niedawna mało kto zdawał sobie sprawę z istnienia takich rozwiązań, jak procesory ARM. Ten stan rzeczy zmieniła inwazja urządzeń mobilnych: tabletów, smartfonów oraz platform takich jak Raspberry Pi. Przed profesjonalnymi programistami pojawiło się nowe wyzwanie — poznanie asemblera platformy ARM.
Jeżeli należysz do tej grupy, trafiłeś na świetną książkę poświęconą temu tematowi. W trakcie lektury zaznajomisz się ze sposobami reprezentacji liczb i znaków oraz modelem programowania ARM7TDMI. Następnie stworzysz swój pierwszy program z wykorzystaniem asemblera oraz poznasz dyrektywy tego języka. Dalsze rozdziały to kolejne elementy programowania w języku asembler. Adresowanie, ładowanie danych, operacje logiczne i arytmetyczne, pętle i instrukcje warunkowe to tylko niektóre z poruszanych zagadnień. Dzięki tej książce zdobędziesz też cenną wiedzę o urządzeniach peryferyjnych oraz obsłudze wyjątków. Książka jest doskonałą lekturą dla wszystkich programistów tworzących oprogramowanie dla procesorów ARM.
Dzięki tej książce:
- poznasz język asembler dla architektury ARM
- opanujesz dyrektywy i zasady korzystania z asemblera
- wykonasz typowe operacje logiczne i arytmetyczne
- z łatwością wykorzystasz typowe konstrukcje języka
Odkryj tajniki języka asembler dla procesorów ARM!
Spis treści
Wprowadzenie (11)
Podziękowania (15)
Informacja o oprogramowaniu (17)
Autor (19)
Rozdział 1. Przegląd systemów komputerowych (21)
- 1.1. Wstęp (21)
- 1.2. Historia architektury RISC (23)
- 1.2.1. Początki firmy ARM (25)
- 1.2.2. Powstanie ARM Ltd. (26)
- 1.2.3. ARM obecnie (28)
- 1.3. Urządzenia liczące (29)
- 1.4. Systemy liczbowe (31)
- 1.5. Reprezentacja liczb i znaków (34)
- 1.5.1. Reprezentacja liczb całkowitych (34)
- 1.5.2. Reprezentacja zmiennoprzecinkowa (37)
- 1.5.3. Reprezentacja znakowa (39)
- 1.6. Tłumaczenie bitów na rozkazy (39)
- 1.7. Narzędzia (41)
- 1.8. Ćwiczenia (43)
Rozdział 2. Model programowania ARM7TDMI (47)
- 2.1. Wstęp (47)
- 2.2. Typy danych (47)
- 2.3. Tryby procesora (48)
- 2.4. Rejestry (49)
- 2.5. Rejestry stanu programu (51)
- 2.5.1. Bity kontrolne (51)
- 2.5.2. Bity trybu (51)
- 2.6. Tabela wektorów (52)
- 2.7. Ćwiczenia (53)
Rozdział 3. Pierwsze programy (55)
- 3.1. Wstęp (55)
- 3.2. Program 1.: Przesuwanie danych (56)
- 3.2.1. Uruchamianie kodu (57)
- 3.2.2. Sprawdzanie zawartości rejestrów i pamięci (58)
- 3.3. Program 2.: Obliczanie silni (58)
- 3.4. Program 3.: Zamiana zawartości rejestrów (61)
- 3.5. Wskazówki dla programistów (61)
- 3.6. Ćwiczenia (63)
Rozdział 4. Dyrektywy i zasady korzystania z asemblera (65)
- 4.1. Wstęp (65)
- 4.2. Struktura modułów języka asemblera (65)
- 4.3. Predefiniowane nazwy rejestrów (68)
- 4.4. Często używane dyrektywy (68)
- 4.4.1. AREA - definicja bloku danych lub kodu (69)
- 4.4.2. RN - definicja nazwy rejestru (70)
- 4.4.3. EQU - definicja symbolu dla stałej numerycznej (70)
- 4.4.4. ENTRY - deklaracja punktu wejścia (71)
- 4.4.5. DCB, DCW i DCD - przydział pamięci i określenie zawartości (71)
- 4.4.6. ALIGN - wyrównanie danych lub kodu do odpowiedniej granicy (72)
- 4.4.7. SPACE - rezerwacja bloku pamięci (73)
- 4.4.8. LTORG - przypisanie punktu startowego puli literałów (73)
- 4.4.9. END - koniec pliku źródłowego (74)
- 4.5. Makra (74)
- 4.6. Pozostałe funkcje asemblera (76)
- 4.6.1. Operacje asemblera (76)
- 4.6.2. Literały (77)
- 4.7. Ćwiczenia (77)
Rozdział 5. Ładowanie, zapisywanie i adresowanie (79)
- 5.1. Wstęp (79)
- 5.2. Pamięć (79)
- 5.3. Ładowanie i zapisywanie - instrukcje (82)
- 5.4. Operandy adresowania (85)
- 5.4.1. Adresowanie preindeksowane (85)
- 5.4.2. Adresowanie postindeksowane (86)
- 5.5. Porządek bajtów (88)
- 5.5.1. Zmiana porządku bajtów (89)
- 5.5.2. Definiowanie obszarów pamięci (90)
- 5.6. Ćwiczenia (91)
Rozdział 6. Stałe i pule literałów (95)
- 6.1. Wstęp (95)
- 6.2. Schemat rotacji ARM (95)
- 6.3. Ładowanie stałych do rejestrów (98)
- 6.4. Ładowanie adresów do rejestrów (101)
- 6.5. Ćwiczenia (105)
Rozdział 7. Operacje logiczne i arytmetyczne (107)
- 7.1. Wstęp (107)
- 7.2. Znaczniki i ich wykorzystywanie (107)
- 7.2.1. Znacznik N (108)
- 7.2.2. Znacznik V (108)
- 7.2.3. Znacznik Z (109)
- 7.2.4. Znacznik C (109)
- 7.3. Instrukcje porównania (109)
- 7.4. Operacje przetwarzania danych (110)
- 7.4.1. Operacje logiczne (111)
- 7.4.2. Przesunięcia i rotacje (112)
- 7.4.3. Dodawanie i odejmowanie (117)
- 7.4.4. Mnożenie (119)
- 7.4.5. Mnożenie przez stałą (120)
- 7.4.6. Dzielenie (121)
- 7.5. Notacja ułamkowa (122)
- 7.6. Ćwiczenia (127)
Rozdział 8. Pętle i skoki (131)
- 8.1. Wstęp (131)
- 8.2. Skoki (132)
- 8.3. Pętle (135)
- 8.3.1. Pętle while (135)
- 8.3.2. Pętle for (136)
- 8.3.3. Pętle do ... while (139)
- 8.4. Więcej na temat znaczników (139)
- 8.5. Wykonanie warunkowe (140)
- 8.6. Kodowanie w linii prostej (142)
- 8.7. Ćwiczenia (143)
Rozdział 9. Tablice (145)
- 9.1. Wstęp (145)
- 9.2. Tablice wyszukiwania (145)
- 9.3. Tablice skoków (149)
- 9.4. Wyszukiwanie binarne (150)
- 9.5. Ćwiczenia (153)
Rozdział 10. Podprogramy i stosy (157)
- 10.1. Wstęp (157)
- 10.2. Stos (158)
- 10.2.1. Instrukcje LDM i STM (158)
- 10.2.2. Stosy pełne, puste, rosnące i malejące (160)
- 10.3. Podprogramy (162)
- 10.4. Przekazywanie parametrów do podprogramów (163)
- 10.4.1. Przekazywanie parametrów przez rejestry (163)
- 10.4.2. Przekazywanie parametrów przez referencję (165)
- 10.4.3. Przekazywanie parametrów na stosie (167)
- 10.5. Standard ARM APCS (168)
- 10.6. Ćwiczenia (169)
Rozdział 11. Obsługa wyjątków (173)
- 11.1. Wstęp (173)
- 11.2. Przerwania (173)
- 11.3. Błędy (174)
- 11.4. Sekwencja wyjątku w procesorze (175)
- 11.5. Tablica wektorów (176)
- 11.6. Handlery wyjątków (179)
- 11.7. Priorytety wyjątków (180)
- 11.8. Procedury obsługi wyjątków (181)
- 11.8.1. Wyjątek Reset (181)
- 11.8.2. Niezdefiniowana instrukcja (181)
- 11.8.3. Przerwania (185)
- 11.8.4. Błędy przerwania (194)
- 11.8.5. SWI (195)
- 11.9. Ćwiczenia (196)
Rozdział 12. Urządzenia peryferyjne z odwzorowaną pamięcią (199)
- 12.1. Wstęp (199)
- 12.2. LPC2104 (200)
- 12.2.1. Układ UART (200)
- 12.2.2. Mapa pamięci (200)
- 12.2.3. Konfigurowanie układu UART (202)
- 12.2.4. Zapis danych do UART (205)
- 12.2.5. Kompletny kod (206)
- 12.2.6. Uruchamianie aplikacji (207)
- 12.3. Układ LPC2132 (208)
- 12.3.1. Konwerter C/A (208)
- 12.3.2. Mapa pamięci (210)
- 12.3.3. Konfiguracja konwertera C/A (210)
- 12.3.4. Generowanie fali sinusoidalnej (210)
- 12.3.5. Kompletny kod (212)
- 12.3.6. Uruchamianie kodu (214)
- 12.4. Ćwiczenia (214)
Rozdział 13. THUMB (217)
- 13.1. Wstęp (217)
- 13.2. Instrukcje THUMB (218)
- 13.3. Różnice pomiędzy ARM i THUMB (220)
- 13.4. Implementacja i użycie THUMB (221)
- 13.4.1. Modyfikacje procesora (221)
- 13.4.2. Przełączanie się pomiędzy stanem ARM i THUMB (221)
- 13.5. Kompilacja dla THUMB (223)
- 13.6. Ćwiczenia (225)
Rozdział 14. Łączenie C i asemblera (227)
- 14.1. Wstęp (227)
- 14.2. Wstawki asemblerowe (227)
- 14.2.1. Składnia wstawek asemblerowych (230)
- 14.2.2. Ograniczenia działania wstawek asemblerowych (231)
- 14.3. Asembler wbudowany (232)
- 14.3.1. Składnia asemblera wbudowanego (234)
- 14.3.2. Ograniczenia działania asemblera wbudowanego (234)
- 14.4. Wywołania pomiędzy C i asemblerem (234)
- 14.5. Ćwiczenia (236)
Dodatek A. Zbiór instrukcji ARM V4T (239)
Dodatek B. Korzystanie z narzędzi Keil (339)
- B.1. Wstęp (339)
- B.2. Tworzenie projektu i wybór urządzenia (339)
- B.3. Tworzenie kodu aplikacji (341)
- B.4. Budowanie projektu i uruchamianie kodu (343)
Dodatek C. Kody znaków ASCII (345)
Glosariusz (347)
Odnośniki (349)
Skorowidz (350)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-9320-7 |
Rozmiar pliku: | 8,5 MB |