私は友人と趣味のプロジェクトとして古い MUD コードベースに取り組んでいますが、debian 以外の OS (具体的には x386) でコードをコンパイルするのに問題があります。この問題は (主に) 私が正直に言って変更するほど十分に理解していないいくつかの asm 行が原因です。VS でコンパイルしようとしたときに受け取るエラーは、「エラー c2059: 構文エラー」29 行目です。これを x64 OS でコンパイルする方法について何か考えはありますか?
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);
}