Простой ассемблерный код генерирует переполнение буфера

Я пытаюсь немного ассемблерного кода, чтобы узнать, как он работает, но в моем первом примере я столкнулся с исключением переполнения буфера. Я использую VS2013 Express Edition, и я использую код C ++, чтобы заставить код ассемблера работать, используя внешнюю функциональность «C». Я пытался изменить некоторые параметры VS, но это не сработало. Что может быть причиной для исключения переполнения буфера, хотя это очень простое утверждение. Обычно я строю и выполняю без оператора mov.

Редактировать : Просто добавьте оператор ret для макроса и проблема решена.

Это сборочная часть:

.586
.model flat,c
.data
.code

doit proc

mov eax, 8
doit endp
end

и вот она часть c ++:

extern "C" void doit();void main()
{

doit();

}

-1

Решение

Причина в том, что процедура ассемблера не имеет ret заявление. Так что поведение программы не определено. 🙂

-1

Другие решения


По вопросам рекламы [email protected]