個別に割り当てられたスタックで関数を実行しようとしています。
後でスタックを保持したいので、スタックを復元して機能を再開できます。
次のコードはコンパイルおよび実行されますが、画面には何も表示されません。
#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 を使用