C++ & asm in GCC (Нужна помощь)

Модератор: Модераторы разделов

Аватара пользователя
Clear_Mind
Сообщения: 241
Статус: Изредко заглядывающий
ОС: openSuSE 11.1

C++ & asm in GCC

Сообщение Clear_Mind »

Есть программа на С++, написанная мною, содержит ассемблерные вставки вида:
asm {
...
}
Программа компилировалась и тестировалась на разных Win компилерах. Но GCC ни как не хочет воспринимать такую форму использования asm.
Буду признателен, если кто подкинет пример исспользования asm'а в тексте С++, который нормально компилируется g++ (с примером командной строки). :(
Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)
Спасибо сказали:
Аватара пользователя
FreeNUX
Сообщения: 185
Статус: с сириуса
ОС: FreeBSD 6.2

Re: C++ & asm in GCC

Сообщение FreeNUX »

В виндовых компиляторах используется другой синтаксис - x86, а в gcc - AT&T. Ссылки по теме: http://wasm.ru/publist.php?list=28
http://linuxassembly.org/
Аркона – лишь тихие воды,
Кровью варяжской янтарь в них застыл.
Аркона – там ветер со взморья
В трещинах скал своё сердце забыл.
Темнозорь - Аркона (Вольницей В Просинь Ночей - 2005)
Спасибо сказали:
Аватара пользователя
d_Sun
Сообщения: 291

Re: C++ & asm in GCC

Сообщение d_Sun »

Еще книга хорошая "GCC Настольная книга пользователей, программистов и системных администраторов" - но стоит дороговато :(
Моя подпись сильно длинная :)
Спасибо сказали:
Ananas
Сообщения: 64

Re: C++ & asm in GCC

Сообщение Ananas »

gcc -mintel-asm
Спасибо сказали:
Аватара пользователя
Clear_Mind
Сообщения: 241
Статус: Изредко заглядывающий
ОС: openSuSE 11.1

Re: C++ & asm in GCC

Сообщение Clear_Mind »

Спасибо Ananas, но мне нужно компилить при помощи g++, а мой g++ опции -mintel-asm не понимает.
Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)
Спасибо сказали:
WolfON
Сообщения: 226

Re: C++ & asm in GCC

Сообщение WolfON »

Тебе-же сказали, что синтаксис другой.
ArchLinux on AXP2000+/768/ATI R9600XT
Registered Linux User 396336
Спасибо сказали:
Ananas
Сообщения: 64

Re: C++ & asm in GCC

Сообщение Ananas »

попробуй -masm=intel. или обновляй компайлер
Спасибо сказали:
WolfON
Сообщения: 226

Re: C++ & asm in GCC

Сообщение WolfON »

man nasm
ArchLinux on AXP2000+/768/ATI R9600XT
Registered Linux User 396336
Спасибо сказали:
Аватара пользователя
Clear_Mind
Сообщения: 241
Статус: Изредко заглядывающий
ОС: openSuSE 11.1

Re: C++ & asm in GCC

Сообщение Clear_Mind »

Решение проблемы я, все таки, нашел. Пришлось покопаться в internet'е и в *.s файлах генерируемых вот такой командой "gcc -S *.cpp".

В общем, две ниже приведенные функции выполняют одни и те же действия.

Код: Выделить всё

long f(long a, long b, long c) {
    asm("movq -8(%rbp), %rax\n\
  imulq -16(%rbp)\n\
  idivq -24(%rbp)\n\
  movq %rdx, %rax\n\
  leave\n ret ");
}

long f2(long a, long b, long c) {
    return (a*b)%c;
}

Функция f приведена для 64-битного процессора :)
Ни каких дополнительных опций компилятору не нужно.

Большое спасибо тем кто откликнулся на вопрос в форуме.
Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)
Спасибо сказали: