Voiko ASSEMBLYä ja C++:saa sotkea keskenään?
esim. kirjoittaa otsikko tiedosto, joka sisältää funktion, joka vuorostaan sisältää assembly -koodia.
Totta kai. Monet kääntäjät, ainakin kaupalliset sellaiset, tukevat ihan inline-assemblyä, VC++:ssa se toimii esimerkiksi näin:
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Arvotaan kaksi lukua, int a ja int b
int a = rand();
int b = rand();
int c;
// Assembly-pätkä alkaa
asm__{
mov eax, a;
mov ecx, b;
add eax, ecx;
mov c, eax;
} // Ja Assembly loppuu.
// Nyt c = a + b. Tulostetaan luvut ja tulos
printf("%i + %i = %i", a, b, c);
return 0;
}Tietysti monissa valmiissa kirjastoissa on käytetty Assemblyä, ja ainakin VC++:ssa saa näkyville ohjelman Assemblyksi käännettynä, koska kääntäjä muuttaa koodin ensin Assemblyksi ja vasta sitten binääriksi.
Ei toimi, valittaa kaikista noista ASSEMBLY -koodeista. Kääntäjäni on Microsoftin Visual C++ 6.0 Pro.
Missä mättää?
Tuli vahingossa alaviivat väärälle puolelle... asm__ on siis oikeasti __asm. Myös VC++:n Helpin käyttö olisi suotavaa, ja kääntäjän virheilmoituksetkin saa lukea ja ymmärtää, ei millään pahalla.
Myös _asm käy __asm:n tilalta. Lisäksi VC++ inline-asm rivien lopussa ei tarvitse ';'-merkkiä, se on kommenttimerkki.
Aihe on jo aika vanha, joten et voi enää vastata siihen.