Я пытаюсь написать код сборки, чтобы вызвать исключение стека, но до сих пор мне не повезло. Исключением стека в соответствии с инструкциями T-программиста AT & T является исключение стека, вызванное одним из следующих:Вызывает исключение стека (x86)
• Подразумеваемые ссылки на стек, в которых адрес стека не находится в канонической форме. Подразумеваемый стек ссылки включают все команды push и pop, а также любую инструкцию, использующую RSP или RBP в качестве базы . • Попытка загрузить селектор сегмента стека, который ссылается на дескриптор сегмента, содержащий чистый текущий бит (дескриптор.P = 0). • Любой доступ к стеку, который не выполняет проверку ограничения стека.
Я пошел на первый метод; Я пытаюсь загрузить RSP с неканонической формой со следующим кодом:
asm volatile("mov $0xAAAAAAAA00000000, %%rax;"
"orq %%rax, %%rsp;"
"push %%rax;" : : :);
GDB просто говорит о не будучи в состоянии решить памяти и все, перерывы, а не исключение. У кого-нибудь есть идеи? Если кто-нибудь не знает, как я могу вызвать исключение, используя третье условие? Я не знаю, что означает «сбой проверки стека». Благодаря!
Самый простой способ, вероятно, будет называть себя снова и снова, пока вы не переполните стек. См. [Некоторые альтернативные методы, не связанные с рекурсией] (http://stackoverflow.com/questions/1583490/without-using-recursion-how-can-a-stack-overflow-exception-be-rown). – DCoder