[C++] VS2008 + Assembler

0

Witam,
chciałbym napisać programik w C++ z "wstawką" w Assemblerze. Robiłem kiedyś coś takiego, ale nie mogę znaleźć starego projektu. Używam Visual Studio 2008. Co należy zmienić w konfiguracji projektu aby takie wstawki były dozwolone? Jak poprawnie powinna wyglądać taka "wstawka" w Assemblerze, która zwraca wynik(Np. int) ?

Pozdrawiam

0

O ile dobrze pamietam to:

__asm //dwa podkreslenia!
{//i tutaj piszesz w asmie..... 
}

W konfiguracji projektu nic nie trzeba zmieniać.

Zwracanie int'a - naprościej:

int myFunc()
{
int aaa=0;
__asm
{
mov eax, 5;
mov aaa, eax;
}
return aaa;
}

..chociaz Tobie pewnie chodzilo o funkcje, ktora cala bedzie w asmie.... ret?

0
cyriel napisał(a)

..chociaz Tobie pewnie chodzilo o funkcje, ktora cala bedzie w asmie.... ret?

__declspec( naked )

0

Wielkie dzięki za przypomnienie. Oczywiście kod assemblerowy może być wewnątrz metody. Napisałem sobie taką małą aplikację testową i dział bez problemu. Więc można robić to co zaplanowałem ;)

int add(int a, int b)
{
	__asm
	{
		mov EAX, b;
		add a, EAX;
	}
	return a;
}

int main(int argc, char* argv)
{
    int a = 4, b = 2;
    int result = add(a, b);
    printf("result = %d\n", result);
    return 0;
}
0

we wstawkach asm nie musisz stosować return, wynik zwraca się przez rejestr edx:eax, eax, ax lub al, zależy od rozmiaru zmiennej czyli:

int add(int a, int b){
	__asm {
		mov eax, a
		add eax, b
	}
}
0

Masz racje - dzięki za przypomnienie. Chciałbym teraz przenieść ten kod do pliku *.asm
Co należy dodać/ustawić w projekcie aby taki plik był widoczny oraz aby można było bez problemu użyć metody, która została zaimplementowana w takim pliku ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1