Тащусь с AT&T ассемблерного синтаксиса вообще и с его
реализации в GCC в частности. Ну разве не прелесть, например, такой
код функции x*y mod m:
inline uint64_t mulmod(const uint64_t x, const uint64_t y, const uint64_t m) {
uint64_t r;
asm (
"mulq %2\n"
"divq %3\n"
: "=&d"(r)
: "a"(x), "r"(y), "r"(m)
);
return r;
}
в котором GCC сам решает по обстоятельствам какие регистры использовать для хранения y и m, что дает ему большую свободу в оптимизации.
Интеловский синтаксис (с его dword ptr и пр. извратами) теперь кажется убожеством.