No, no, no... gcc is not a dinosaur, their inline asm is much more powerful than VC's. It's just that the syntax is a huge pain. It's more powerful because you can tell gcc exactly what is getting changed and it can inline and optimize your asm with the surrounding code.
The way you tell it what to do is with "constraints" and "clobbers"... It's fairly complicated so here's my 60 explanation. You have 4 colon separated fields: the asm statement : output operands : input operands : clobbered memory/registers.
Your example would look something like:
int a = 5;// statement outputs inputs clobbered registers/memoryasm("movl %0, %eax" : : "r"(a) : "%eax");asm("addl $5, %eax" : /* I don't think you need to clobber %eax again... */);asm("movl %eax, 0x0(%0)" : "=m"(a));
Of course, I've never done x86 assembly with gcc... only PS2 assembly, which designates their registers differently. So I can't promise this will work. But you should note that the operands are specified in the asm in reverse order. The =m is because you're writing To that memory. "r" means toss it in a register before executing the expression...
Here is a little IBM tutorial. Don't let people knock gcc asm too much. I'll agree that the syntax is awful, especially the reversed operands, but it really is the best thing going.