W przeciwieństwie do (większości) łuku RISC instrukcje x86 mają zmienną długość. Początek/koniec instrukcji nie musi być wyrównany. Jeśli kompilator nie może po prostu kłaść jednej instrukcji na marginesie strony.W jaki sposób sprzęt i kompilator radzą sobie z instrukcją x86, która przechodzi w stronę, która nie jest wykonywalna?
Załóżmy, że jeśli pierwszy bajt instrukcji jest na ostatnim bajcie strony, który jest oznaczony jako plik wykonywalny. Pozostałe bajty instrukcji znajdują się na drugiej stronie, która jest oznaczona jako niewykonywalna.
W takim przypadku, co stanie się w CPU, gdy wykonanie osiągnie tę instrukcję?
Czy kompilator musi zajmować się takimi przypadkami?
Wzniesiono niewyjaśnione potępienie. – EJP
Gdy następna strona * jest * wykonywalna, po prostu działa. Pobieranie odbywa się w porcjach wyrównanych, tworząc kolejkę dla dekoderów. Łączenie bajtów z oddzielnych stron dzieje się po pewnym czasie po zakończeniu pobierania, po sprawdzeniu TLB, więc nie jest to jak ładowanie danych podzielone na strony. –