Fre*_*Cen 3 c++ assembly operating-system kernel iostream
请问,有人知道如何将启动与内核联系起来吗?例如,我有这个代码用于启动:
[BITS 16]
[ORG 0x7C00]
[global start]
[extern _main]
start:
call _main
cli
hlt
Run Code Online (Sandbox Code Playgroud)
这对我的C++文件:
#include <iostream>
#include <string>
int main()
{
std::cout << "Hello World" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我将.cpp文件编译为.o文件,将.asm文件编译为.o文件.但是,我现在如何将这些文件链接到kernel.bin?它有一些代码吗?这段代码会起作用吗?请帮我.
首先,您不能使用C/C++标准库,因为在业余爱好操作系统中,它不存在*.
其次,您的C++代码似乎是32位格式,而汇编代码是16位格式.除非两者都是16或两者都是32,否则这些不能链接.
我建议查看OSDev Wiki(user786653也发布了这篇文章)...它有许多有用的资源可以让你开始编写操作系统.
如果您真的想从头开始使用16Bit程序集,并且希望能够使用32Bit C++代码,则必须执行以下步骤:
(注意这样做你必须具备高水平的C/C++知识,至少在汇编方面有一些知识)
*如果您在自己的库中编程,则忽略第一个语句.
希望这可以帮助!
-Adrian
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |