简单的程序集代码会产生缓冲区溢出

Simple assembly code generates buffer overrun

本文关键字:缓冲区 溢出 程序集 代码 简单      更新时间:2023-10-16

我正在尝试一些汇编代码来了解它的工作原理,但在我的第一个示例中,我遇到了缓冲区溢出异常。我使用的是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();
}

原因是汇编程序没有ret语句。因此程序的行为是未定义的。:)