Asembler cwiczenia praktyczneRysunek 3...

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
Powered by wordpress | Theme: simpletex | © Jak ciÄ™ zÅ‚apiÄ…, to znaczy, że oszukiwaÅ‚eÅ›. Jak nie, to znaczy, że posÅ‚użyÅ‚eÅ› siÄ™ odpowiedniÄ… taktykÄ….