C++ functies aanroepen vanuit assembly

Status
Niet open voor verdere reacties.

Arjan B

Gebruiker
Lid geworden
11 dec 2006
Berichten
364
Ik wil dus een C++ functie aanroepen vanuit een stukje assembly.

Code:
#include <iostream>

void PrintInt( int number );
void PrintNL();

int main()
{
	int number = 5;
	__asm
	{
		PUSH number
		CALL PrintInt
	}
	std::cin.get();
}

void PrintInt( int number ) {
	std::cout << number;
}

void PrintNL() {
	std::cout << std::endl;
}

Dit is wat ik in gedachten had, ik zie de 5 verschijnen maar daarna krijg ik een runtime error:
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

En ik heb dus geen idee wat ik ermee moet ^^.

Kan iemand mij uitleggen hoe ik een C++ functie aanroep vanuit assembly en misschien ook uitleggen waarom wat ik probeerde niet werkt?

Alvast bedankt!
 
Voeg na de call eens 'POP number' toe.

Code:
#include <iostream>

void PrintInt( int number );
void PrintNL();

int main()
{
	int number = 5;
	__asm
	{
		PUSH number
		CALL PrintInt
                POP number
	}
	std::cin.get();
}

void PrintInt( int number ) {
	std::cout << number;
}

void PrintNL() {
	std::cout << std::endl;
}

:)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan