Wstawki asemblerowe
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 */
);
- Operandy podaje się jako listę oddzieloną przecinkami elementów postaci
"xxx" (wartosc)
gdzie xxx określa wymagania co do miejsca umieszczenia wartości np.
- "a"(123) - wartość 123 ma być umieszczona w rejestrze eax
-
"r"(dlugosc) - wartość zmiennej dlugosc ma być umieszczona w dowolnym rejestrze ogólnego przeznaczenia
-
"m"(wysokosc) - wartość zmiennej wysokość ma być umieszczona w pamięci i przekazany będzie adres jej lokalizacji
- "i"(0xfffffc00) - wartość 0xfffffc00 będzie wstawiona do kodu jako argument instrukcji.
- Przed operandami wyjściowymi dodatkowo dajemy znak = np. "=r" (wyjscie)
- Operandy te są dostępne pod literałami %0, %1, %2, ... (liczy się najpierw wyjście potem wejście)
Tomasz Kapela, Kraków 2011-2020