сборка — связывание функции asm из переполнения стека

У меня есть следующий код ассемблера в&т стиль:

# asmFunc.asm

.global asmFunc

.section .text

asmFunc:
pushl %ebp
movl %esp, %ebp
addl $8,%ebp
movl %ebp, %eax
addl $4,%ebp
movl %ebp, %ebx
addl %eax,%ebx
movl %ebp, %esp
popl %ebp
ret

Затем у меня есть файл cpp следующим образом:

// main.cpp
#include <iostream>

extern "C" int asmFunc(int a, int b);

int main() {
int a,b;

std::cout << "Type in 1st num: \n" << std::endl;
std::cin >> a;
std::cout << "Type in 2nd num: \n" << std::endl;
std::cin >> b;
std::cout << "Assembly function asmFunc(" << a << ", " << b << ") is" << asmFunc(a,b) << std::endl;

return 0;
}

Я компилирую ассемблерный код с «asmFunc.asm -o asmFunc.o», который не вызывает проблем. Cpp компилируется с использованием «g ++ -c main.cpp -o main.o». Когда я пытаюсь связать файлы, используя «g ++ main.o asnFunc.o -o start», я получаю следующую ошибку компоновщика:

(.text+0xb5): undefined reference to `asmFunc'
collect2: error: ld returned 1 exit status

Почему это? Я использую 32-битный CygWin для компиляции и компоновки исходников.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]