Насколько я могу сказать, единственная разница между __asm { ... };
и __asm__("...");
это первое использование mov eax, var
и второе использование movl %0, %%eax
с :"=r" (var)
в конце. Что другие различия там? И что относительно просто asm
?
Какой из них вы используете, зависит от вашего компилятора. Это нестандартно, как язык C.