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.