简单的汇编代码会生成缓冲区溢出

时间:2014-09-29 11:55:29

标签: c++ assembly buffer-overrun

我正在尝试使用一些汇编代码来了解它是如何工作的,但在我的第一个例子中,我遇到了缓冲区溢出异常。我正在使用VS2013快递版,我正在使用c ++代码通过使用extern" C"来使汇编代码工作。功能。我试图改变一些VS选项,但它没有用。有什么理由可以提供缓冲区溢出异常,而这是一个非常简单的语句。通常我在没有mov语句的情况下构建和执行。

编辑:只需为宏添加一个ret语句,问题就解决了。

这是assmbly部分:

.586
.model flat,c
.data
.code

doit proc

mov eax, 8  
doit endp
end

这里是c ++部分:

extern "C" void doit();


void main()
{  

doit();

}

1 个答案:

答案 0 :(得分:-1)

原因是汇编程序没有ret语句。所以程序的行为是不确定的。:)