a13x4nd7u Posted August 15, 2008 Report Posted August 15, 2008 Salut,Pana acum foloseam Windows XP, dar de curand am hotarat sa imi pun Linux. Am vazut ca ceea ce facusem in Windows cu asamblare nu mergea si pe Linux.Aveam pentru Windows functia:char getch(void){ char chx=0; asm { mov ah,0 int 16h mov [chx],al } if(chx == 0) { asm { mov ah,10 int 16h mov [chx],al } } return chx;}Cu ce ar trebui sa inlocuiesc "asm { ... }" in cele 2 locuri pentru ca acest cod sa mearga pe Linux?Multumesc anticipat. Quote
Grunt Posted August 19, 2008 Report Posted August 19, 2008 http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html Quote
a13x4nd7u Posted December 1, 2008 Author Report Posted December 1, 2008 Cand am vrut sa fac asta asa a fost demult. Tin minte ca am cautat pe google si chiar am citit acel articol care nu ajuta deloc daca stii asamblare Intel.Asamblarea inline a lui gcc respectiv g++ este AT&T, si nu Intel.Ca sa imbini C/C++ cu asamblare Intel (acum am aflat) pe Linux poti folosi nasm sau gas (doar compilarea), gcc sau g++ doar compilarea, si dupa aia le legi cu ld.Cu gcc / g++ compillezi sursa C/C++:gcc -c -o obiect_c.o sursa.cg++ -c -o obiect_cpp.o sursa.cppCu nasm compilezi sursa asm:nasm -f aout sursa.asm -o obiect_asm.oCu ld legi cele 2 obiecte create:ld -o executabil obiect_asm.o obiect_c.osauld -o executabil obiect_asm.o obiect_cpp.o Quote