Syntaxe extended assembleru – příklad
#include <stdio.h>
int main(int argc, char *argv[])
{
int result, op1 = 4, op2 = 2;
asm volatile (
"mov %1,%0;"
"add %2,%0;"
: "=r" (result)
: "r" (op1), "r" (op2)
: "cc");
printf("result = %d\n", result);
return 0;
}
%0 odpovídá result, %1 odpovídá op1 a %2 odpovídá op2.
Přeloží se na (viz objdump -d ...):
...
1051: ba 04 00 00 00 mov $0x4,%edx
1056: b8 02 00 00 00 mov $0x2,%eax
...
105e: 89 d2 mov %edx,%edx
1060: 01 c2 add %eax,%edx
...