A basic asm
statement has the following syntax:
asm asm-qualifiers ( AssemblerInstructions )
For the C language, the asm
keyword is a GNU extension.
When writing C code that can be compiled with -ansi and the
-std options that select C dialects without GNU extensions, use
__asm__
instead of asm
(see Alternate Keywords). For
the C++ language, asm
is a standard keyword, but __asm__
can be used for code compiled with -fno-asm.
volatile
The optional volatile
qualifier has no effect.
All basic asm
blocks are implicitly volatile.
inline
If you use the inline
qualifier, then for inlining purposes the size
of the asm
statement is taken as the smallest size possible (see Size of an asm
).
This is a literal string that specifies the assembler code. The string can contain any instructions recognized by the assembler, including directives. GCC does not parse the assembler instructions themselves and does not know what they mean or even whether they are valid assembler input.
You may place multiple assembler instructions together in a single asm
string, separated by the characters normally used in assembly code for the
system. A combination that works in most places is a newline to break the
line, plus a tab character (written as ‘\n\t’).
Some assemblers allow semicolons as a line separator. However,
note that some assembler dialects use semicolons to start a comment.