我正在尝试在单独分配的堆栈上运行一个函数。
我想保留堆栈以供以后使用,以便我可以恢复它并恢复该功能。
以下代码编译并运行,但屏幕上没有任何内容。
#include <cstdlib>
#include <csetjmp>
#include <iostream>
using namespace std;
unsigned char stack[65535];
unsigned char *base_ptr = stack + 65535 - 1;
unsigned char *old_stack;
unsigned char *old_base;
void function()
{
cout << "hello world" << endl;
}
int main()
{
__asm
{
mov old_base, ebp
mov old_stack, esp
mov ebp, base_ptr
mov esp, base_ptr
call function
mov ebp, old_base
mov esp, old_stack
}
}
使用vs2012/win8/intel Q9650