취미 프로젝트로 친구와 함께 오래된 MUD 코드베이스에서 작업하고 있지만 debian (x386 이외의 다른 OS에서 컴파일 할 코드를 가져 오는 데 문제가 있습니다.). 문제는 (대부분) 수정하기에 충분히 이해할 수없는 몇 줄의 asm 행 때문입니다. VS 컴파일 할 때 I 나타나는 오류 "오류 C2059입니다 : 구문 오류 ''라인 29이이 64 OS에서 컴파일하는 방법에 대한 어떤 생각C/C++ 머드 코드에서 asm 휘발성 문제
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);
}
와우, 이것은 매우 아프다. 좋은 발견! –