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.

questionAnswers(3)

yourAnswerToTheQuestion