Pok-13-wyk-Slajd12

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(1)

Generacja kodu – idiomy maszynowe(1)


Stosując idiomy maszynowe nie należy całkowicie ulegać rutynie – czasami może się okazać, że modyfikowanie kodu jest bezcelowe. Powróćmy do przykładu z zerowaniem rejestru akumulatora przyjmując, że zawartość rejestru stanu procesora nie jest dla nas istotna.

Operacja załadowania argumentu natychmiastowego trwa co prawda dokładnie tyle samo co obliczenie różnicy symetrycznej i takie same są możliwości parowania jej w potokach procesora, ale jest ona zdecydowanie dłuższa – lepiej wybrać krótszą instrukcję, bo większe jest prawdopodobieństwo, że kod zmieści się w pamięci notatnikowej procesora (w praktyce, generując kod wynikowy powinniśmy znać pojemności i organizację wszystkich poziomów pamięci podręcznej procesora docelowego).

Do wyzerowania rejestru możemy wykorzystać jeszcze jeden rozkaz – odejmowanie, ale operacja różnicy symetrycznej powinna być efektywniejsza od odjęcia rejestru od siebie. Powinna – ponieważ jest operacją logiczną i nie jest konieczne generowanie przeniesień między bitami – w przeciwieństwie do operacji odejmowania. W procesorze X86 jednak nie jest – obydwa rozkazy trwają dokładnie tyle samo i tak samo mogą być parowane.


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