If you need gory details, read the GCC documentation on Extended Asm .
The short answer is that this moves the x86 stack pointer (% esp register) to a C variable called "esp". "= G" tells the compiler which types of operands it can replace %0 in the assembly code. (In this case, it is a "shared operand", which means that almost any register or memory reference is allowed.)
source share