powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ассемблерная вставка в UNIX
3 сообщений из 3, страница 1 из 1
Ассемблерная вставка в UNIX
    #38187359
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер.

Пишу на Cи под FreeBSD 9.1 на gcc.

Необходимо заменить ИСКЛЮЧАЮЩЕЕ ИЛИ на Cи на аналог ассемблерной вставкой.

Пишу код двумя способами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
int res1, res2, aa = 0x5, bb = 0x3;
__asm__ ("xorl %%eax, %%ebx;"
             :"=a"(res1)        
             :"a"(aa),"b"(bb)        
             );
printf("xor (%X, %X) = %X (%X)\n", aa, bb, res1, aa^bb);
__asm__ ("movl %1, %%eax;"
         "movl %2, %%ebx;"
         "xorl %%eax, %%ebx;"
         "movl %%eax, %0;"
             :"=q"(res2)        
             :"q"(aa),"q"(bb)
             :"%eax", "%ebx"			 
             );
printf("xor (%X, %X) = %X (%X)\n", aa, bb, res2, aa^bb);



Вывод:
xor (5, 3) = 5 (6)
xor (5, 3) = 5 (6)

Как видно в обоих случаях получается не верное значение ( 5(101) XOR 3(011) = 6(110) ). После долгих тестов я понял что в результат у меня всегда записывается первый аргумент ( aa ).

Подскажите, как сделать эту элементарную операцию правильно??
...
Рейтинг: 0 / 0
Ассемблерная вставка в UNIX
    #38187492
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"xorl %%ebx, %%eax;"
Этож GNU синтакс а не Intel
Порядок операндов: откуда, куда.
...
Рейтинг: 0 / 0
Ассемблерная вставка в UNIX
    #38187924
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, спасибо, вот как раз на третий день меня это осенило само минут 10 назад)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ассемблерная вставка в UNIX
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]