我有一个名为 的文件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