Programowanie w asemblerze x64. Od nowicjusza do znawcy AVX - ebook
Programowanie w asemblerze x64. Od nowicjusza do znawcy AVX - ebook
Nauka programowania w asemblerze bywa frustrująca. Język ten jest trudny i nie wybacza błędów. Jednak przebrnięcie przez te niedogodności przyniesie Ci wiele korzyści. Zdobędziesz bezcenną wiedzę o działaniu procesora, zyskasz też skuteczne narzędzie do badania złośliwego oprogramowania. Staniesz się o wiele lepszym programistą, a wiedza o instrukcjach AVX pozwoli Ci na spektakularne optymalizowanie kodu napisanego w językach wyższego poziomu.
Z tą książką stopniowo nauczysz się prostego, podstawowego kodu, a potem bardziej złożonych instrukcji AVX. Nabierzesz wprawy w czytaniu kodu asemblera i zaczniesz łączyć go z kodem w językach wyższego poziomu. Co ważniejsze, teorię ograniczono tu do niezbędnego minimum, za to dokładnie opisano dostępne narzędzia, omówiono sposób ich użytkowania i możliwe problemy. Kod natomiast został zaprezentowany w postaci kompletnych programów asemblera, co pozwoli Ci na dowolne testowanie, zmienianie i inne eksperymenty. W ten sposób przygotujesz się do samodzielnego badania różnych obszarów AVX i korzystania z oficjalnych podręczników Intela.
Dzięki książce:
- zrozumiesz, jak działa procesor i na czym polega praca systemu operacyjnego
- dowiesz się, jak kompilatory generują kod maszynowy
- poznasz skuteczniejsze sposoby poprawiania swoich programów
- nauczysz się uruchamiania programów w asemblerze
- zaczniesz badać złośliwe oprogramowanie i podejmować niezbędne działania
Chcesz zrozumieć, jak naprawdę działa procesor? Naucz się asemblera!
Spis treści
O autorze
O recenzencie technicznym
Wprowadzenie
Zanim zaczniesz
Rozdział 1. Twój pierwszy program
- Edycja, asemblacja, konsolidowanie i uruchamianie (lub debugowanie)
- Struktura programu w asemblerze
- Sekcja .data
- Sekcja .bss
- Sekcja .txt
- Podsumowanie
Rozdział 2. Liczby binarne, liczby szesnastkowe i rejestry
- Krótkie wprowadzenie do liczb binarnych
- Liczby całkowite
- Liczby zmiennoprzecinkowe
- Krótkie wprowadzenie do rejestrów
- Rejestry ogólnego przeznaczenia
- Rejestr wskaźnika instrukcji (rip)
- Rejestr flag
- Rejestry xmm i ymm
- Podsumowanie
Rozdział 3. Analizowanie programu za pomocą debugera: GDB
- Rozpoczynanie debugowania
- Do dzieła!
- Kilka dodatkowych poleceń GDB
- Nieco ulepszona wersja programu hello, world
- Podsumowanie
Rozdział 4. Twój następny program: żyje i ma się dobrze!
- Analiza programu
- Wypisywanie
- Podsumowanie
Rozdział 5. Asembler jest oparty na logice
- NOT
- OR
- XOR
- AND
- Podsumowanie
Rozdział 6. Data Display Debugger
- Praca z DDD
- Podsumowanie
Rozdział 7. Skoki i pętle
- Instalowanie SimpleASM
- Używanie SASM
- Podsumowanie
Rozdział 8. Pamięć
- Eksplorowanie pamięci
- Podsumowanie
Rozdział 9. Arytmetyka liczb całkowitych
- Wprowadzenie do arytmetyki liczb całkowitych
- Badanie instrukcji arytmetycznych
- Podsumowanie
Rozdział 10. Stos
- Jak działa stos
- Monitorowanie stosu
- Podsumowanie
Rozdział 11. Arytmetyka zmiennoprzecinkowa
- Pojedyncza i podwójna precyzja
- Kodowanie z liczbami zmiennoprzecinkowymi
- Podsumowanie
Rozdział 12. Funkcje
- Pisanie prostej funkcji
- Więcej funkcji
- Podsumowanie
Rozdział 13. Wyrównanie stosu i ramka stosu
- Wyrównanie stosu
- Więcej o ramkach stosu
- Podsumowanie
Rozdział 14. Funkcje zewnętrzne
- Budowanie i konsolidowanie funkcji
- Rozszerzanie pliku makefile
- Podsumowanie
Rozdział 15. Konwencje wywoływania
- Argumenty funkcji
- Układ stosu
- Zachowywanie rejestrów
- Podsumowanie
Rozdział 16. Operacje bitowe
- Podstawy
- Arytmetyka
- Podsumowanie
Rozdział 17. Manipulacje bitowe
- Inne sposoby modyfikowania bitów
- Zmienna bitflags
- Podsumowanie
Rozdział 18. Makra
- Pisanie makr
- Narzędzie objdump
- Podsumowanie
Rozdział 19. Konsolowe wejście-wyjście
- Praca z wejściem-wyjściem
- Jak radzić sobie z przepełnieniem bufora
- Podsumowanie
Rozdział 20. Plikowe wejście-wyjście
- Wywołania systemowe
- Obsługa plików
- Asemblacja warunkowa
- Instrukcje do obsługi plików
- Podsumowanie
Rozdział 21. Wiersz poleceń
- Dostęp do argumentów wiersza polecenia
- Debugowanie wiersza poleceń
- Podsumowanie
Rozdział 22. Od C do asemblera
- Pisanie pliku źródłowego C
- Pisanie kodu asemblera
- Podsumowanie
Rozdział 23. Asembler wplatany
- Podstawowy asembler wplatany
- Rozszerzony asembler wplatany
- Podsumowanie
Rozdział 24. Łańcuchy
- Przenoszenie łańcuchów
- Porównywanie i skanowanie łańcuchów
- Podsumowanie
Rozdział 25. Identyfikowanie procesora
- Instrukcja cpuid
- Instrukcja test
- Podsumowanie
Rozdział 26. SIMD
- Dane skalarne i upakowane
- Dane niewyrównane i wyrównane
- Podsumowanie
Rozdział 27. Rejestr mxcsr
- Manipulowanie bitami mxcsr
- Analiza programu
- Podsumowanie
Rozdział 28. SSE - wyrównanie danych
- Przykład z niewyrównanymi danymi
- Przykład z wyrównanymi danymi
- Podsumowanie
Rozdział 29. SSE - upakowane liczby całkowite
- Instrukcje SSE operujące na liczbach całkowitych
- Analiza kodu
- Podsumowanie
Rozdział 30. SSE - manipulowanie łańcuchami
- Bajt sterujący imm8
- Używanie bajta sterującego imm8
- Bity 0. i 1.
- Bity 2. i 3.
- Bity 4. i 5.
- Bit 6.
- Bit 7.
- Flagi
- Podsumowanie
Rozdział 31. Wyszukiwanie znaku
- Określanie długości łańcucha
- Wyszukiwanie w łańcuchach
- Podsumowanie
Rozdział 32. Porównywanie łańcuchów
- Długość niejawna
- Długość jawna
- Podsumowanie
Rozdział 33. Przetasowania
- Pierwsze spojrzenie na tasowanie
- Tasowanie z dystrybucją
- Tasowanie z odwracaniem
- Tasowanie z rotacją
- Tasowanie bajtów
- Podsumowanie
Rozdział 34. SSE - maski łańcuchowe
- Wyszukiwanie znaków
- Wyszukiwanie zakresu znaków
- Wyszukiwanie podłańcucha
- Podsumowanie
Rozdział 35. AVX
- Test obsługi AVX
- Przykładowy program AVX
- Podsumowanie
Rozdział 36. AVX - operacje macierzowe
- Przykładowe obliczenia na macierzach
- Wypisywanie macierzy: printm4x4
- Mnożenie macierzy: multi4x4
- Odwracanie macierzy: inverse4x4
- Twierdzenie Cayleya-Hamiltona
- Algorytm Leverriera
- Kod
- Podsumowanie
Rozdział 37. Transpozycja macierzy
- Przykładowy kod do transpozycji macierzy
- Wersja z odpakowywaniem
- Wersja z tasowaniem
- Podsumowanie
Rozdział 38. Optymalizacja wydajności
- Wydajność obliczeń związanych z transpozycją macierzy
- Wydajność obliczania śladu macierzy
- Podsumowanie
Rozdział 39. Witaj, świecie Windows
- Pierwsze kroki
- Pisanie kodu
- Debugowanie
- Wywołania systemowe
- Podsumowanie
Rozdział 40. Używanie Windows API
- Wyjście konsolowe
- Budowanie okien
- Podsumowanie
Rozdział 41. Funkcje w Windows
- Używanie więcej niż czterech argumentów
- Praca z wartościami zmiennoprzecinkowymi
- Podsumowanie
Rozdział 42. Funkcje wariadyczne
- Funkcje wariadyczne w Windows
- Mieszanie wartości
- Podsumowanie
Rozdział 43. Pliki w Windows
- Podsumowanie
Posłowie. Co dalej?
Skorowidz
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-0110-0 |
Rozmiar pliku: | 28 MB |