'__asm' keyword not supported on this architecture 에러
VS2003 32bit 프로젝트코드를 VS2005로 가져와서 64bit(x64) 컴파일 하고 있는 중입니다.
두가지 질문있습니다.
1. 64bit 컴파일하려니 수 많은 에러가 발생했는데 대부분 아래와 같은 TYPE Casting 관련 에러였습니다.
LPCTSTR <-> LPCWCHAR
CString <-> char*
LPCTSTR <-> LPSTR
일일이 강제 Casting 으로 다 잡긴 잡았는데.. 그래도 이상이 없는 것인지..
아니면 프로젝트 속성에서 컴파일 관련 설정으로 해결이 가능한 부분인지 궁금합니다.
2. 에러 다 잡고 마지막 에러가 해결이 안됩니다.
아래와 같은 register 연산 로직인데 32bit 컴파일에서는 되고 64bit 컴파일에서는 안되는것 같습니다.
에러내용과 로직입니다.
error C4235: nonstandard extension used : '__asm' keyword not supported on this architecture
__asm
{
// Save the esi and edi registers
push esi
push edi
mov eax, dwCrc32 // Load the pointer to dwCrc32
mov ecx, [eax] // Dereference the pointer to load dwCrc32
mov ebx, this // Load the CRC32 table
mov edi, [ebx]CCrc32Dynamic.m_pdwCrc32Table
mov esi, buffer // Load buffer
mov ebx, dwLen // Load dwBytesRead
lea edx, [esi + ebx] // Calculate the end of the buffer
...
2. 32비트 어셈블리는 64비트 어셈블리와 호환되지
2. 32비트 어셈블리는 64비트 어셈블리와 호환되지 않습니다. 32비트로 컴파일하거나, __asm 안에 들어 있는 어셈블러로 된 부분을 C/C++로 새로 작성해야 합니다.
아 그렇군요... 감사합니다~ ^^
아 그렇군요... 감사합니다~ ^^
댓글 달기