Pok-13-wyk-Slajd14

Z Studia Informatyczne
Wersja z dnia 19:14, 30 sie 2006 autorstwa Complak (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Generacja kodu – idiomy maszynowe(3)

Generacja kodu – idiomy maszynowe(3)


Rutynowym ulepszeniem jest pozbycie się rozkazu mnożenia, który w procesorach X86 jest i wolniejszy od przesunięcia, i wyjątkowo niewygodny w użyciu (mało formatów, ściśle określone rejestry).

Mnożenie przez 8 zastępujemy więc przesunięciem – kod jest mniejszy od początkowej wersji o 6 bajtów i szybszy o 12-13 cykli – zysk jak widać jest już zauważalny.

Jednak uważne przestudiowanie listy rozkazów procesora X86 ujawnia, że do obliczenia wyrażenia o tej postaci można użyć rozkazu, który jest w zamyśle projektantów przeznaczony do zupełnie innego celu, a mianowicie obliczenia efektywnego adresu. Użycie rozkazu lea zmniejsza kod do 7 bajtów, a czas wykonania do 1 cyklu. W stosunku do pierwotnej wersji umiejętne generowanie kodu z wykorzystaniem idiomów maszynowych pozwoliło nam uzyskać 20-krotne przyspieszenie i 3-krotną redukcję rozmiaru kodu wynikowego.


<< Poprzedni slajd | Spis treści | Następny slajd >>