Форум программистов, компьютерный форум CyberForum.ru

[C++] ассемблерный модуль - C++

Восстановить пароль Регистрация
 
Cammandos
Заблокирован
03.12.2011, 12:34     [C++] ассемблерный модуль #1
Привет всем.
Я вот тут пытаюсь ассемблерную вставку в с++ запихнуть...
А не получается. Точнее получается... Но как - то криво.

Пишу просто для пробы:
C++
1
2
3
4
5
...
void printab(int );
int x1;
asm("pushl %0\n\tcall printab \n\tpop %%eax" : : "r" (x1));
...
Пишет мне
undefined reference to printab

Смотрел в инете. Нашел, например это:

C++
1
2
3
4
asm ("movl %0,r9\n\tmovl %1,r10\n\tcall _foo"
: /* no outputs */
: "g" (from), "g" (to)
: "r9", "r10");
Но ведь тут тоже _foo неопределена.
Это отсюда:
http://gcc.activeventure.org/Extende...l#Extended-Asm

Смотрел и др. сайты. Примеры одни и те же.

Попытался сделать это подобным образом
C++
1
asm("pushl %0\n\tcall %1 \n\tpop %%eax" : : "r" (x1),"r"(printab));
Пишет предупреждение
indirect call without '*'
Но работает. Но что значит это предупреждение?
Как от него избавиться?
Я просто не понимаю, что имеется ввиду.
Что не есть гут.
Объясните пожалуйста, что это значит, и как от этого избавиться.
И (если они есть) другие способы вызова функций.

Добавлено через 23 секунды
есчо надо и модуль воткунуть как сделать ???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 12:34     [C++] ассемблерный модуль
Посмотрите здесь:

Модуль в С++ C++
модуль Масивы C++
C++ модуль от double?
C++ Модуль
модуль числа C++
C++ Модуль трансляции
C++ Модуль числа
ln^2 и модуль C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
03.12.2011, 14:07     [C++] ассемблерный модуль #2
берёшь модуль в котором определенна твоя принттаб и делаешь objdump -t xxx | grep "printab"

Добавлено через 31 минуту
это ответ на первую часть поста, просто если твой линкер вдруг не нашёл твоей принтаб, то не удивляйся, в С++ можно ведь перегрузить функцию. В исходном коде у них могут быть одинаковые имена, но в таблице символов компилятор даст им свои уникальные зависящие от конкретных соглашений в тч abi, обычно они что-нибудь прибавляют к имени и если функция определена в модуле или расшареной библиотеки, ты ты всегда можешь её погрепать по имени
Yandex
Объявления
03.12.2011, 14:07     [C++] ассемблерный модуль
Ответ Создать тему
Опции темы

Текущее время: 01:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru