![]() |
|
Модераторы: xvr |
![]()
|
|
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Доброго времени суток, форумчане.
Проблема следующая. Использую среду Code::Blocks сборка 23102006, компилятор MinGW G++ из поставки CodeBlocks 1.0 RC2. Мне требуется делать в коде С++ ассемблерные вставки. По умолчанию компилятор разпознает и использует AT&T синтаксис. Включение Intel - синтаксиса, как выяснилось, делается путем добавления к опциям компилятора "-masm=intel". Все бы хорошо, но: Многие из математических функций определяются напрямую в MinGW-библиотеках как __builtin_, то есть непосредственно транслируемые в ассемблер. И при использованию опции компилятора "-masm=intel" и одновременно вызове функций типа std::log10 и т.д. Компилятор пишет сообщения об ошибке типа: "Не могу скомпилировать ассемблерную инструкцию < и далее идут ассемблерные инструкции в AT&T синтаксисе >. Вопрос: как с этим можно бороться? Использовать вставки на AT&T Ассемблере не предлагать. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
AT&T синтаксис - true, зря не хотите использовать Варианты решения 1. Использовать вместо стандартных функций чего-нибудь непривязанное к ассемблеру 2. Переписать нужные функции в Intel-синтаксисе -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Ага, всюду и везде читал и учил Intel - синтаксис, а теперь переходить на AT&T - забавно... Если честно, мне он очень не нравится... Но это все личное... Переписывать сии функции - значит переписать половину MinGW'шного <cmath>. По-моему, не выход. Все-таки мне странно, что компилятор поступает подобным образом. Ладно, допустим, я решу попробовать AT&T синтаксис... MAKCim, посоветуй электронные буки по сабжу. |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
действительно, только что проверил - все работает (правда под Linux)
Кратко но по делу у Зубкова: "Assembler для DOS, Windows, UNIX" здесь -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
MAKCim, спасибо за буку, почитаю.
Странно, сколько искал книжки по программированию и Ассемблеру в частности, на этот сайт не натыкался... Если будут еще интересные предложения ( например, все-таки укротить G++, пишите... ). |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Дополнительный вопрос по этой же теме:
Есть С++-функция, которой передали несколько целочисленных параметров. Как в ассемблерной вставки к этим именам обращаться? Имя, ПодчеркиваниеИмя - не помогло. Компилятор и среда - см. в первом посте. В книге Зубкова: "Assembler для DOS, Windows, UNIX" - нету. Там только краткий обзор... И не рассматривается взаимодействие с внешними языками. Если можно, пример или ссылку на пример. |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Advanced Linux Programming Если кратко, сложение a=a+b;
в скобках стоит "r" и "=r" знак = означает выходной операнд буква r означает любой регистр, вместо r можно писать идентификаторы конкретных регистров: "a", "b", "c" конкретно про asm-вставки в gcc Это сообщение отредактировал(а) MAKCim - 27.10.2006, 19:40 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Приблизительно начинаю понимать... Хотя после Intel - овского синтаксиса выглядит просто жуть.
Но что-то в этом есть. MAKCim, еще раз спасибо и респект. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
У AT&T синтаксиса куча преимуществ по сравнению с Intel-овским все дело в привычке, после M$ на *NIX тоже тяжело приходится -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 3 Всего: 162 |
Да уж, привычка - вторая натура.
Тема закрыта. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |