Kategorie

Kamami.pl - oficjalny dystrybutor Raspberry Pi

Nowe produkty


Obniżka! Asembler dla procesorów ARM Zobacz większe

Asembler dla procesorów ARM

ID: 484518

Dodaj do listy życzeń

Więcej informacji

Tytuł oryginału: ARM Assembly Language: Fundamentals and Techniques
Tłumaczenie: Paweł Gonera
ISBN: 978-83-246-9319-1
Data wydania: 2014-10-10
Format: 168x237
Stron: 352


O książce

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)