저는 ASM을 배우려고 노력 중이며 C++와 결합 된 몇 가지 시도를하고 싶습니다. ASM 부분은 알몸 함수로 수행됩니다. 하지만 함수를 호출 할 때마다 (비어 있음) 응용 프로그램이 다음 함수에서 충돌합니다. 알몸 기능으로 작동하게하려면 어떻게해야합니까? esp 또는 뭔가를 팝업해야합니까? 좋은 예가 될 수 있습니다.C++ 알몸 함수 사용
_declspec(naked) void asmfunc()
{
_asm
{
}
}
int _tmain(int argc, _TCHAR* argv[])
{
i = 1;
asmfunc();
cout << i << endl; // <-- crash
system("pause");
return 0;
}
[documentation] (http://msdn.microsoft.com/it-it/library/h5w10wxs.aspx)에 지정된대로 프롤로그/에필로그 코드를 작성해야합니다. [이 질문] (http://stackoverflow.com/questions/3021513/could-someone-explain-declspecnaked-please)을 참조하십시오. 또한 네이티브 함수가 정말로 필요한지 생각해보십시오. 원하는 것은 임베디드 어셈블리를 작성하고 정규 함수를 사용하여 컴파일러가 C++ 호출 규칙을 처리하도록하려는 경우입니다. –
호출 규칙에주의하십시오. 알몸 함수는 필수 레지스터를 보존하지 않습니다. – Mysticial