这周主要学习了保护模式下操作系统的加载与运行,但还没有完全学完。其中有个知识点是汇编语言与C语言合作实现一段程序。大概流程是这样:
image.png
(图来自《Orange'S:一个操作系统的实现》)
image.png
在Linux上实现,具体实现大致是:
①在写.asm程序的时候使用“extern”表示使用的函数来自外部文件,使用“global”表示函数可以被外部使用。C语言不需要特殊说明,按语法写即可,函数间采用栈传递参数,后面的参数先入栈。
②编译(compile),各自生成目标文件.o文件,汇编用nasm,C用gcc,此时的.o文件已经是机器语言文件了。
③链接(link),采用nasm,生成.bin文件。本质上是根据函数名将函数相互链接起来,因此一定不要重名!
④ld指令可以指定程序在内存中的位置:ld –s –Ttext指定