ze5400 Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 #include <iostream> using namespace std; int pluss2(int tall){ _asm{ mov eax, tall; add eax, 2; mov tall, eax; } return tall; } int main(){ cout << pluss2(5) << endl; Jeg er ny i c++, og prøver å inkludere asm kode i c++ i en c++ fil (det er ikke operasjonensom blir gjort i dette tilfellet, det er prinsippet). Hva er galt med denne koden? Jeg bruker Ubuntu Dapper Drake som OS. og Anjuta som IDE, som igjen bruker g++ som kompilator. Har også prøvd samme koden i VS2005 uten at det virket Noen ideer? Lenke til kommentar
Mokki Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 (endret) Har ikke prøvd inline assembly i c++, men tror du trenger dobbelt underline foran asm: __asm istedenfor _asm Endret 16. mai 2006 av Joy Toy Lenke til kommentar
Peter Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 (endret) Fungerer fint her, med både én og to underscores: #include <iostream> using namespace std; int pluss2(int tall){ __asm{ mov eax, tall; add eax, 2; mov tall, eax; } return tall; } int main() { cout << pluss2(5) << endl; std::cin.get(); return 0; } (Jeg la til alt under std::cin.get(), da kompilatoren klagde over dette;. \main.cpp(43) : fatal error C1075: end of file found before the left brace '{' at '.\main.cpp(15)' was matched main.cpp(15) = int main() { I fremtiden er det greit om du gir feilmeldingen, så vi slipper å gjette på egenhånd... Endret 16. mai 2006 av Nazgul Lenke til kommentar
ze5400 Skrevet 17. mai 2006 Forfatter Del Skrevet 17. mai 2006 (endret) Takk! Nå virka det i VS2005! *Tester på linux nå* Hmm, i linux får jeg fortsatt feil C++ og ASM.cc: In function ‘int pluss2(int)’:C++ og ASM.cc:6: error: expected `(' before ‘{’ token C++ og ASM.cc:7: error: ‘mov’ was not declared in this scope C++ og ASM.cc:7: error: expected `;' before ‘eax’ C++ og ASM.cc:8: error: ‘add’ was not declared in this scope C++ og ASM.cc:8: error: expected `;' before ‘eax’ C++ og ASM.cc:9: error: expected `;' before ‘tall’ #include <iostream> using namespace std; int pluss2(int tall){ __asm{ mov eax, tall; add eax, 2; mov tall, eax; } return tall;} int main() { cout << pluss2(5) << endl; getchar(); return 0; } Endret 17. mai 2006 av ze5400 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå