简单的程序集代码会产生缓冲区溢出
Simple assembly code generates buffer overrun
我正在尝试一些汇编代码来了解它的工作原理,但在我的第一个示例中,我遇到了缓冲区溢出异常。我使用的是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
语句。因此程序的行为是未定义的。:)
相关文章:
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 使用 strcat 获取缓冲区溢出错误
- LeetCode 1:两和 - 地址清理器:堆缓冲区溢出地址
- 使用向量的缓冲区溢出
- 重新增长阵列时出错:写入时缓冲区溢出
- Leetcode 1366:堆缓冲区溢出
- 缓冲区溢出 - 数组索引越界(严重)
- C++二维矢量导致缓冲区溢出
- 缓冲区溢出怎么会成为黑客的攻击
- 如何防止缓冲区溢出
- 应该如何读取堆缓冲区溢出错误消息?
- 自动截断和 null 终止缓冲区溢出中的字符串缓冲区
- 如果用户输入两个或多个由空格分隔的字符串C++如何防止缓冲区溢出?
- 我正在尝试使用回溯来解决 N queen 问题,但在编译时它会给出运行时错误(动态堆栈缓冲区溢出)
- 为什么 LeetCode 给出错误:地址清理器:堆缓冲区溢出
- 为什么错误 C6386 缓冲区溢出与 strsafe.h 字符串 Cch 函数
- 读取文件时字符缓冲区溢出
- C 文本写入随机数据.是否有缓冲区溢出