У меня есть файл с именем idt.c
, и в этом файле мне нужно вызвать функцию idt_load
из сборки.Теперь это будет работать нормально, за исключением того, что мне нужен доступ к переменной idtp
из файла сборки, и переменная объявлена в idt.c
Это не будет работать, потому что компоновщик будетскажите мне, что либо idt_load не определено, либо idtp не определено.Как я могу заставить это работать?
Соответствующие части idt.c
struct idt_entry
{
unsigned short base_lo;
unsigned short sel;
unsigned char always0;
unsigned char flags;
unsigned short base_hi;
} __attribute__((packed));
struct idt_ptr
{
unsigned short limit;
unsigned int base;
} __attribute__((packed));
struct idt_entry idt[256];
struct idt_ptr idtp;
extern void idt_load();
//Later in the code...
idt_load();
idt.asm
global idt_load
extern idtp
idt_load:
lidt [idtp]
ret