gpt4 book ai didi

assembly - 引导加载程序错误 : Help in assembly

转载 作者:行者123 更新时间:2023-12-03 06:35:19 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的操作系统,但是当我编译引导加载程序时,出现错误:

error: binary output format does not support external references

我知道这个错误是什么意思,但是编译为二进制格式时是否可以进行外部引用?这是我的完整代码:

;Bootloader.s
[BITS 16]
[ORG 0x7C00]
global loader
extern kmain

loader:
call kmain
times 510-($-$$) db 0
dw 0xAA55

还有我的内核:

/*kernel.c*/
void kmain()
{
unsigned char *vidmem = (unsigned char *) 0xb8000;
int i
for(i=1;i<=11;i+=2)
{
vidmem[i]=0x07;
}
vidmem[0]='H';
vidmem[2]='e';
vidmem[4],vidmem[6]='l';
vidmem[8]='o';
videmem[10]='!';
}

我是如何编译的:

nasm -o '/home/myusername/Cubed OS/Bootloader.o' '/home/myusername/Cubed OS/Bootloader.s'

最佳答案

您只能拥有可链接的目标文件格式的外部引用。裸二进制文件不是,所以你不能直接这样做。

(据我所知,您需要先设置一个堆栈,然后才能调用 C 函数。)

我看到了三种解决这个问题的方法:

关于assembly - 引导加载程序错误 : Help in assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7131875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com