car*_*995 3 assembly callstack masm
基于Microsoft MASM 文档,.STACK 指令的用法是
当与 .MODEL 一起使用时,定义一个堆栈段(具有段名称 STACK)。可选大小指定堆栈的字节数(默认为 1,024)。.STACK 指令自动关闭堆栈语句。(仅限 32 位 MASM。)
为了实验,我做了.STACK分配1,073,741,824 bytes (1 GB)
请注意,我在 Visual Studio 2013 控制台项目中运行代码。
.586
.MODEL FLAT
.STACK 1073741824
.DATA
a DWORD 50
b DWORD 55
.CODE
main PROC
addLoop: mov eax, a
push eax
mov eax, 0
mov ebx, b
push ebx
jmp addLoop
RET
main ENDP
END
Run Code Online (Sandbox Code Playgroud)
该代码将溢出堆栈。我所做的是记下ESP寄存器的第一个地址,让代码运行直到溢出,然后ESP从第一个中减去最后一个以获得堆栈的大小。
在我的上下文中,它是00DAFEE4 - 00CB3000 + 1 = 000FCEE5. 这只是1036005 bytes (~1 MB).
为什么???
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |