Как аппаратное обеспечение и компилятор работают с инструкцией x86, которая переходит в неисполняемую страницу? - PullRequest
6 голосов
/ 12 июля 2011

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

Предположим, что если первый байт инструкции находится в последнем байте страницы, который помечен как исполняемый. Остальные байты инструкции находятся на второй странице, которая помечена как неисполняемая.

В таком случае, что произойдет в ЦП, когда выполнение достигнет этой инструкции?

Должен ли компилятор заботиться о таких случаях?

1 Ответ

5 голосов
/ 12 июля 2011

Аппаратные средства (должны, не проверялись) генерируют GPF.

Компилятору все равно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...