不可否认,这次的标题有点长.之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解 GCC 生成 16 位实模式代码方法的朋友带到我的博客.先说一下背景,编写能在 x86 实模式下运行的 16 位代码,这个话题确实有点复古,所以能找到的资料也相应较少.要运行 x86 实模式的程序,目前我知道的只有两种方式,一种是使用 DOS 系统,另一种是把它写成引导扇区的代码,在系统启动时直接运行.很显然,许多讲自己实现操作系统的书籍都会讲到 x86 实模式,也只有自己实现操作系统引导的朋友需要
感谢这篇文章的作者: http://www.cnblogs.com/strugglesometimes/p/4231359.html 编译是个很蛋疼的事情,本想把linux0.12在bochs上跑起来然后就可以各模块的学习,没想各种问题. 问题1: 1 gas -c -o boot/head.o boot/head.s 2 make: gas: Command not found gas已过时,将所有Makfile里gas -> as 具体解决方法 1 msed gas as msed 是
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之间的内容按照数学公式进行排版,从而导致评论区格式混乱.如果大家的评论中用到了$,但是又不是为了使用数学公式,就请使用\$转义一下,谢谢. 想从头阅读该系列吗?下面是传送门: Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论 Linux 桌面玩家指南:02. 以最简洁的方式打造实用的
?21,# head.s contains the 32-bit startup code.# head.s 是32位的启动代码 # Two L3 task multitasking. The code of tasks are in kernel area,# 有两个L3(Level 3,即第三特权级,IA32提供给用户0-3,四个特权级,但是Linux0.11只使用了# 0和3这两个特权级,表示用户态程序和内核态程序,内核-kernel)的多任务 # just like the Li