我找到了以下函数here,希望在MinGW下编译它:
size_t stackavail()
{
static unsigned StackPtr;
__asm mov [StackPtr],esp
static MEMORY_BASIC_INFORMATION mbi;
VirtualQuery((PVOID)StackPtr,&mbi,sizeof(mbi));
return StackPtr-(unsigned)mbi.AllocationBase;
}
我试图修改上面的代码,并设法编译和运行它:
size_t stackavail()
{
static unsigned StackPtr;
__asm__ ("movl %%esp, %0\n\t" : "=r" (StackPtr) );
MEMORY_BASIC_INFORMATION mbi;
VirtualQuery((PVOID)StackPtr, &mbi, sizeof(mbi));
return StackPtr-(unsigned)mbi.AllocationBase;
}
但我不确定。对吗?还有别的办法吗?
最佳答案
你可以去掉内联的ASM,使用
void* StackPtr = &StackPtr;
关于c++ - 将Visual C/C++内联汇编代码转换为GCC等效代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21266802/