Привет всем.
Мне надо использовать асм вставку. А я не особо в этом опытный.
Пишу просто для пробы:
...
void printab(int );//то есть функция объявлена
...
int x1;
asm("pushl %0\n\tcall printab \n\tpop %%eax" : : "r" (x1));
...
Пишет мне
undefined reference to printab
Смотрел в инете. Нашел, например это:
asm ("movl %0,r9\n\tmovl %1,r10\n\tcall _foo"
: /* no outputs */
: "g" (from), "g" (to)
: "r9", "r10");
Но ведь тут тоже _foo неопределена.
Это отсюда:
http://gcc.activeventure.org/Extended-Asm.html#Extended-Asm
Смотрел и др. сайты. Примеры одни и те же.
Попытался сделать это подобным образом
asm("pushl %0\n\tcall %1 \n\tpop %%eax" : : "r" (x1),"r"(printab));
Пишет предупреждение
indirect call without '*'
Но работает. Но что значит это предупреждение?
Как от него избавиться?
Объясните пожалуйста, что это значит, и как от этого избавиться.
И как тогда сделать "direct call"?
Спрашивал на других форумах, но пока никто не ответил.
09.08.05 17:44: Перенесено модератором из 'C/C++' — Павел Кузнецов