2013-12-16 2 views
0

asm 파일에서 함수를 정의하고이 함수를 Cpp 파일/함수에서 호출하려고합니다. 또한 64 비트 플랫폼에서 프로젝트를 컴파일해야합니다.C++에서 asm 호출

어셈블리 코드에 대해 많이 알지 못해서 저에게 도움을주십시오. 어떤 도움을 주시면 감사하겠습니다.

감사

답변

0

는 코드는 도움이 될,하지만 당신은 일반 C++ 함수 내에서 인라인 어셈블리를 배치 할 경우이 같은 ASM 블록에 배치하여 그렇게 할 수 있습니다

void myClass::myFunc() { 
    // cpp code 
    int a = 0; 
    // ... 

    // asm code 
    __asm { 
     mov eax, ebx; 
     // ... 
    }; 

    // more cpp code 
    // ... 
} 
+1

인라인 asm은 32 비트 전용입니다 (Visual Studio). 64 비트 ASM은 별도의 파일에 있어야합니다. – egur

+0

안녕 스미스 먼저 도움을 주셔서 감사합니다. 그러나 우리는 x64에서 컴파일 할 수 없으므로 일반 C++ 함수 내에 인라인 어셈블리를 배치하고 싶지 않습니다. 64 비트 용 asm/s 파일에서 어셈블리 코드를 분리해야합니다. – vsoni

2

This file은 CPUID로 작업을 수행하는 ffdshow의 ASM 파일입니다. 그것은 모두 x64와 x86입니다. YASM은 그것을 조립하는 데 사용됩니다.

오늘날 대부분의 사람들은 ASM 코드를 작성하는 것이 아니라 내장 함수를 사용합니다. 모든 SSE/AVX/등의 고유 기능이 있습니다. 저레벨의 ring0 인 경우에도 마찬가지입니다. 내장 함수 (Intrinsic functions)는 컴파일러가 추가 최적화를 할 수있게 해주고 32 비트와 64 비트 빌드간에 공유됩니다.