Использование функций на ассемблере (Проблема находимости)

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

Nikonik
Сообщения: 19

Использование функций на ассемблере

Сообщение Nikonik »

Пытаюсь научиться использовать из С функции написанные на языке asm.
Следую (вроде как) по статье

В проекте файл testasm.c

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

int main()
{
  int a = sqr(20);
  return 0;
}


и файл sqr.s

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

.globl sqr
sqr:
        movl 4(%esp), %eax
        imull %eax, %eax
        ret


компилирую:

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

gcc.exe -c sqr.s -o sqr.o
gcc.exe -c testasm.c -o testasm.o
gcc.exe testasm.o sqr.o  -o "TestAsm.exe" -L"lib"
testasm.o(.text+0x32):testasm.c: undefined reference to `sqr'


я пробовал объявлять прототип функции с "extern" - тогда оно компилируется g++, но при сборке все равно говорит, что не может найти функцию

возмможно это что-то внутренее в порте gcc (mingw in devcpp) под windows?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Использование функций на ассемблере

Сообщение Uncle_Theodore »

На Линуксе
$ gcc --version
gcc (GCC) 3.3.6

Все компилится и работает чисто (я добавил вывод значения a). Возможно, действительно, баг mingw...
Спасибо сказали: