В отличие от (большинства) RISC-арок, инструкции x86 имеют переменную длину. Начало / конец инструкции не обязательно должен быть выровнен. Если компилятор этого не делает, одна инструкция может просто лежать через поле страницы.
Предположим, что если первый байт инструкции находится в последнем байте страницы, который помечен как исполняемый. Остальные байты инструкции находятся на второй странице, которая помечена как неисполняемая.
В таком случае, что произойдет в ЦП, когда выполнение достигнет этой инструкции?
Должен ли компилятор заботиться о таких случаях?