我正在和一个朋友一起开发一个旧的 MUD 代码库,作为一个爱好项目,但是我在让代码在除 debian(特别是 x386)以外的任何操作系统中编译时遇到问题。问题是(主要)是因为我真的不了解修改的一些 asm 行。尝试在 VS 中编译时收到的错误是“错误 c2059:语法错误”第 29 行。关于如何在 x64 操作系统上编译的任何想法?
void Execute(int nArgs, ...)
{
if(MAX_FUNCTION_ARGS < nArgs)
throw "Error: CFuncPtr has too many args";
int i;
void *fptrs[MAX_FUNCTION_ARGS], *ptrs[MAX_FUNCTION_ARGS];
va_list ap;
va_start(ap, nArgs);
for(i = 0; i < nArgs; i++)
fptrs[i] = va_arg(ap, void *);
for(i = 0; i < nArgs; i++)
{
ptrs[i] = fptrs[nArgs - i - 1];
// ============== This is the part with the issue
asm volatile("" \ // This is line 29.
"movl %0, %%eax\n\t" \
"pushl %%eax\n\t" \
:
: "r"(ptrs[i])
: "%eax");
// ==============
}
(*funcptr) ();
va_end(ap);
}