Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.
8.
Odwzorowanie rejestrów MMX na rejestrach koprocesora arytmetycznego Rejestry MMX w przeciwieństwie do rejestrów koprocesora dostępne są wprost poprzez swoje nazwy: MM0, MM1, …, MM7. Rejestry rozszerzenia SSE oraz SSE2 Rozszerzenie SSE, jakie pojawiło się z chwilą wprowadzenia procesora Pentium III oraz jego dalsze rozwinięcie w Pentium 4, występujące pod nazwą SSE2, jest w pew-nym stopniu połączeniem idei koprocesora arytmetycznego, operującego na liczbach zmiennoprzecinkowych, oraz rozszerzenia MMX, które pozwala równolegle (równo-cześnie) przetwarzać kilka danych, spakowanych w jednej danej. Programista otrzymuje do dyspozycji osiem nowych rejestrów 128-bitowych, dostępnych bezpośrednio poprzez nazwy XMM0, XMM1, …, XMM7 (por. rysunek 3.9). Rozdział 3. Asembler, czyli język zorientowany maszynowo 21 Rysunek 3.9. 128-bitowe rejestry rozszerzenia SSE oraz SSE2 Rozszerzenie SSE wprowadza nowy format spakowanej 128-bitowej danej, zawierają- cej cztery 32-bitowe liczby zmiennoprzecinkowe pojedynczej precyzji. Rozszerzenie SSE2 rozszerza te możliwości o kolejne formaty. Programista, korzystając z rozkazów operujących na danych typu SSE oraz SSE2, ma w Pentium 4 do dyspozycji następują- ce formaty danych 128-bitowych: 1. Wartości zmiennoprzecinkowe: 4 wartości zmiennoprzecinkowe pojedynczej precyzji4, 2 wartości zmiennoprzecinkowe podwójnej precyzji. 2. Wartości całkowite: 16 bajtów, 8 słów, 4 podwójne słowa, 2 poczwórne słowa. Na koniec tego pobieżnego przypomnienia elementów architektury, niezbędnego dla zrozumienia ćwiczeń omówionych w kolejnych rozdziałach, zbierzemy na jednym rysunku (rysunek 3.10) środowisko, w jakim porusza się programista uruchamiający program na procesorze Pentium 4. 3.3. Skąd czerpać wiedzę na temat asemblera? Jak już kilkakrotnie wspomniano w tej książce, dostępność literatury na temat języka asemblera procesorów Pentium nie jest zbyt duża. Wystarczy wejść do dowolnej księ- garni technicznej, aby na półkach znaleźć wiele pozycji dotyczących baz danych, języka C, Pascala i być może jedną pozycję dotyczącą asemblera. Najczęściej jednak nie znaj-dziemy żadnej pozycji. Sięgnięcie do największych światowych księgarń internetowych, takich jak np. www.amazon.com, także nie daje satysfakcjonujących rezultatów. 4 Występuje także w rozszerzeniu SSE. 22 Asembler. Ćwiczenia praktyczne Rysunek 3.10. Podstawowe środowisko programisty w języku asemblera W chwili pisania tych słów jedynymi w miarę aktualnymi pozycjami, dostępnymi na stronach tej księgarni, były książki [7] i [8], które nie są jednak pełnym opisem asemblera, pozwalają jedynie (trzeba przyznać, że dosyć gruntownie) poznać podstawy tego języka. Pozostaje oczywiście niezawodny Internet, w którym doświadczony internauta znajdzie prawie wszystko. Wiemy już, że aby programować w asemblerze, musimy znać: architekturę procesora i jego listę rozkazów, a także organizację pamięci operacyjnej — tę wiedzę skutecznie uzyskamy na stronach www.intel.com5, opis języka MASM6, strukturę programu asemblerowego, dyrektywy, pseudoinstrukcje, makroinstrukcje asemblera. 5 Na potrzeby tej książki korzystaliśmy z dokumentacji udostępnionej na stronach producenta procesorów, w szczególności z pozycji [1], [2], [3], [10], [11] i [12]. Rozdział 3. Asembler, czyli język zorientowany maszynowo 23 Najcenniejszą pozycją drukowaną, opisującą język MASM jest [9] — niestety obecnie praktycznie jest ona nieosiągalna. Niewiele też niestety można znaleźć na stronach www.microsoft.com. Pozostaje szukanie w sieci na stronach przede wszystkim uczelni wyższych, na których prowadzone są wykłady z tego zakresu oraz na stronach różnych pasjonatów asemblera. Na tych ostatnich można znaleźć wiele ciekawych informacji, przykładowych programów, a nawet krótkich kursów programowania w asemblerze. Nie będziemy w tym miejscu podawać konkretnych adresów stron WWW, bowiem ule-gają one zmianom i szybko się dezaktualizują. Warto także śledzić dyskusję na grupach dyskusyjnych, poświęconych asemblerowi procesorów 80x867. 6 W książce opieramy się na języku makroasemblera MASM firmy Microsoft. Dla procesorów Pentium dostępne są także inne asemblery, w szczególności TASM firmy Borland, mający wiele identycznych bądź podobnych do języka MASM elementów oraz NASM — o zupełnie innej filozofii niż MASM i TASM. Język NASM dostępny jest w Internecie na podobnych zasadach, jak system operacyjny Linux. 7 Dostępne grupy w chwili pisania książki: comp.lang.asm.x86 (angielskojęzyczna), de.comp.lang. assembler.x86 (niemieckojęzyczna).
|
WÄ…tki
|