Я делаю проект, который прикрепляет подпрограмму, которую я написал в основной файл, включенный учителем. Он дал нам инструкции для того, чтобы сделать нашу подпрограмму глобальной, но, по-видимому, я идиот. Два файла asm находятся в одной папке, я использую nasm -f elf -g prt_dec.asm
и ld prt_dec
, а затем делаю то же самое для main.asm. Вот соответствующий код в main.asm:nasm вызов подпрограммы из другого файла
SECTION .text ; Code section.
global _start ; let loader see entry point
extern prt_dec
_start:
mov ebx, 17
mov edx, 214123
mov edi, 2223187809
mov ebp, 1555544444
mov eax, dword 0x0
call prt_dec
call prt_lf
Линия call prt_dec
бросает «неопределенная ссылка на prt_dec», когда я использую ld main.o
Вот сегмент кода из моего prt_dec.asm:
Section .text
global prt_dec
global _start
start:
prt_dec:
(pushing some stuff)
L1_top:
(code continues)
Спасибо, похоже, проблема заключалась в моем методе сборки файлов. – rcj