Converter código de assembly in-line para C ++
Eu estou trabalhando em um projeto cpp. O projeto precisa ser migrado para 64 bits. Ele contém algum código de assembly Inline que não pode compilar em x64. Esta é a função que contém o código assembly:
void ExternalFunctionCall::callFunction(ArgType resultType, void* resultBuffer)
{
#if defined(_NT_) || defined(__OS2__)
// I386
// just copy the args buffer to the stack (it's already layed out correctly)
int* begin = m_argsBegin;
int* ptr = m_argsEnd;
int arr[1000], i=0;
while (ptr > begin) {
int val = *(--ptr);
__asm push val
}
void* functionAddress = m_functionAddress;
// call the function & handle the return value. use __stdcall calling convention
switch (resultType) {
case voidType:
__asm {
call functionAddress
}
break;
case pointerType:
case int32Type:
__asm {
call functionAddress
mov ebx, resultBuffer
mov dword ptr [ebx],eax
}
break;
case floatType:
__asm {
call functionAddress
mov ebx, resultBuffer
fstp dword ptr [ebx]
}
break;
case doubleType:
__asm {
call functionAddress
mov ebx, resultBuffer
fstp qword ptr [ebx]
}
break;
}
Eu usei stack, array para migrar este "asm push val" mas não funcionou. Embora não apresente nenhum erro de compilação, a lógica não funcionou.
Então, eu quero perguntar, o que posso usar em C ++ em vez de "__asm push val". Qualquer ajuda será apreciada.