Wstawki asemblerowe
Po co wstawki?
Składnia AT&T

Główne różnice pomiędzy składnią Intela a AT&T

Proste wstawki

Do umieszczania prostych wstawek używamy instrukcji

asm( "Instrukcje asemblerowe");

Powoduje to proste wklejenie danego tekstu (kodu asemblerowego) do pliku generowanego przez gcc, bez żadnego sprawdzenia poprawności, np.

asm("movl %ecx, %eax \n\t addl %ebx, %eax");

Dlatego też konieczne jest np. wstawienie znaków nowej linii po każdej instrukcji.

Można też kolejne instrukcje oddzielać średnikiem i umieszczać je w osobnych łancuchach tekstowych.

asm("movl %ecx, %eax ;" 
    "addl %ebx %eax;");

Jeżeli nasz kod modyfikuje jakiś rejestr i nie przywraca jego wartości może to prowadzić do błędnego działania programu. Kompilator (zwłaszcza podczas optymalizacji) może umieszczać pewne zmienne w rejestrach i zakładać, że one się nie zmienią.

Wstawki złożone

Ogólna postać wstawki asemblerowej ma postać

 asm ( "szablon instrukcji asemblerowych" 
      : wyjściowe operandy               /* optional */
      : wejściowe operandy               /* optional */
      : lista niszczonych obiektów       /* optional */
     );