Pok-13-wyk-Slajd11

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

Generacja kodu – idiomy maszynowe


Uważny dobór instrukcji kodu maszynowego pozwala uzyskać istotną poprawę jakości kodu wynikowego. Najlepiej efekty wykorzystania specjalnych postaci ogólnych rozkazów (tzw. idiomów maszynowych) można zademonstrować na procesorach o złożonej liście rozkazowej, tzw. architekturze CISC (np. Intel X86), w którym:

  • rozkazy mają różną długość
  • ten sam efekt można uzyskać za pomocą różnych rozkazów
  • ta sama operacja wykonywana w różnych rejestrach ma inną długość i czas wykonania
  • niektóre rozkazy (np. mnożenie) mogą zostać wykonane tylko w określonych rejestrach.

Jeżeli chcemy wyzerować rejestr możemy do tego celu użyć najbardziej oczywistego rozwiązania – rozkazu załadowania do niego wartości natychmiastowej. Ten sam efekt możemy uzyskać obliczając różnicę symetryczną z nim samym, która ma krótszy kod i jest potencjalnie szybsza. Rozkazy te jednak nie są dokładnie równoważne – załadowanie argumentu natychmiastowego nie niszczy zawartości rejestru stanu procesora w przeciwieństwie do obliczenia różnicy symetrycznej.

Czasami ta sama operacja może mieć różny koszt w zależności od rejestru, na którym jest wykonywana – załadowanie argumentu natychmiastowego do akumulatora ma krótszy kod niż załadowanie tego samego argumentu do innego rejestru.


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