Jeżeli tak jak w kodzie poniżej używamy rejestrów wyjściowych do obliczeń mogą wystąpić problemy
int x=2, y=3, result; asm( "movl %1, %0;" "addl %2, %0;" : "=r"(result) : "r"(x), "r"(y) : );
Wyjściem jest poinformowanie kompilatora, że rejestr wyjściowy jest wcześnie nadpisywany i w takim razie nie powinien umieszczać w nim danych wejściowych. W tym celu używamy modyfikatora &
int x=2, y=3, result; asm( "movl %1, %0;" "addl %2, %0;" : "=&r"(result) : "r"(x), "r"(y) );
Należy nie nadużywać tego modyfikatora gdyż może to uniemożliwić optymalizację kodu.