Kurs programowania w C cz. 159

Nasza ocena:

5
Wyświetleń: 602
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C cz. 159 - strona 1

Fragment notatki:

JĘZYK C I ASEMBLER 179 Zwracanie wartości Na architekturze i386 do zwracania wyników pracy programu używa się rejestru EAX, bądź jego “mniejszych” odpowiedników, tj. AX i AH/AL. Zatem aby funkcja, napisana w asemblerze zwróciła “1” przed rozkazem ret należy napisać: movl $1, %eax Nazewnictwo Kompilatory języka C/C++ dodają podkreślnik “ ” na początku każdej nazwy. Dla przy- kładu funkcja: void funkcja(); W pliku wyjściowym będzie posiadać nazwę funkcja. Dlatego, aby korzystać z poziomu języka C z funkcji zakodowanych w asemblerze, muszą one mieć przy definicji w pliku asemblera wspomniany dodatkowy podkreślnik na początku. Łączymy wszystko w całość Pora, abyśmy napisali jakąś funkcję, która pobierze argumenty i zwróci jakiś konkretny wynik. Oto kod f1.S: .text .globl _funkcja _funkcja: pushl %ebp movl %esp, %ebp movl 8(%esp), %eax /* kopiujemy pierwszy argument do %eax */ addl 12(%esp), %eax /* do pierwszego argumentu w %eax dodajemy drugi argument */ popl %ebp ret /* ... i zwracamy wynik dodawania... */ oraz f2.c: #include  extern int funkcja (int a, int b); int main () { printf ("2+3=%d\n", funkcja(2,3)); return 0; } Po skompilowaniu i uruchomieniu programu powinniśmy otrzymać wydruk: 2+3=5 Wstawki asemblerowe Oprócz możliwości wstępnie skompilowanych modułów możesz posłużyć się także tzw. wstawkami asemblerowymi . Ich użycie powoduje wstawienie w miejsce wystąpienia wstaw- ki odpowiedniego kodu maszynowego, który powstanie po przetłumaczeniu kodu asemblero- wego. Ponieważ jednak wstawki asemblerowe nie są standardowym elementem języka C, każdy kompilator ma całkowicie odmienną filozofię ich stosowania (lub nie ma ich w ogóle). Ponie- waż w tym podręczniku używamy głównie kompilatora GNU, więc w tym rozdziale zostanie omówiona filozofia stosowania wstawek asemblera według programistów GNU. Ze wstawek asemblerowych korzysta się tak: ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz