Код (Text): asm ("bswap %1" : "=r" (i) : "0" (i)); Есссс..! Спасибо вам. Это работает! Я не знаю как устроено это но главное что оно работает. А ту статью про asm я ещё прочитаю, но думаю мне это пока не нужно. Код (Text): 5. Extended Asm. http://www.ibiblio.org/gferg/ldp/GCC-In … HOWTO.html Спасибо конечно, но мой английский пока не настолько высок, чтобы читать документацию. Всем ответившим огромное спасибо, считаю что ответ получен и тему можно закрыть.
Спасибо за статью. Жаль, что там так мало про AT&T асм, хотелось бы больше. Теперь я понял что означают эти двоеточия, и %% перед регистрами, однако неясно почему именно "=r", ведь больше нигде эта r не встречается. Также у вас написано что номера входных/выходных операндов, обозначаются префикосм %, но как отличить %0 входного операнда от %0 выходного операнда. И что за список используемых регистров такой. Хоть отдельную тему создавать(
По поводу r и =r: r - так описывается входной операнд\ы =r - так описывается выходной операнд\ы Входной от выходного операнда как вы уже поняли отличается перфиксом "=" в перечне выходных операндов При перечислении операндов они нумеруются от первого выходного до последнего входного по порядку. Код (Text): :"=r"(x) ;%0 :"r"(x) ,"r"(y) ;%1, %2 :"%eax", "%ebx" Именование играет роль. r - обычно любой регистр, но обязанный быть перечисленным в 3 строчке ниже. (вы так же можете написать вместо r что угодно). Но если написать "a" то в перечне регистр можно не указывать - это будет регистр %eax. Об э том говорится в той статье на английском. Скопирую оттуда зарезервированный перечень: Код (Text): +---+--------------------+ | r | Register(s) | +---+--------------------+ | a | %eax, %ax, %al | | b | %ebx, %bx, %bl | | c | %ecx, %cx, %cl | | d | %edx, %dx, %dl | | S | %esi, %si | | D | %edi, %di | +---+--------------------+ А зачем нужен список регистров - так как раз за тем что ваши переменные использовать в коде. По сути компилятор присваивает значение переменной регистру, и наоборот. В зависимости от действия. Ну примерно так. Поправьте, если не прав.
Спасибо за отличное описание! А у вас есть ещё статью про АСМ синтаксиса АТиТ? Я бы с радостью почитал..