【发布时间】:2017-02-12 17:30:18
【问题描述】:
我正在学习操作系统开发,当然是初学者。我想在实模式环境中构建我的系统,这是一个使用 C 语言的 16 位环境。
在 C 语言中,我使用函数asm() 将代码转换为 16 位,如下所示:
asm(".code16")
在 GCC 的语言中生成 16 位可执行文件(虽然不完全是)。
问题:
假设我有两个头文件head1.h 和head2.h 和一个main.c 文件。 main.c文件内容如下:
asm(".code16");
#include<head1.h>
#include<head2.h>
int main(){
return 0;
}
现在,由于我使用生成 16 位可执行文件的命令开始我的代码,然后包含 head1.h 和 head2.h,我是否需要在我要创建的所有头文件中执行相同的操作? (或)将asm(".code16"); 行添加一次就足够了吗?
操作系统:Ubuntu
编译器:Gnu CC
【问题讨论】:
-
我建议你不要使用 gcc 编译 16 位代码。你使用的是一个会导致一堆问题的杂物。
标签: gcc assembly operating-system kernel bootloader