从零制作操作系统-第五部分(简单显示与连接器)

VGA(Video Graphics Array)

VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用

VGA文本模式

VGA 文本模式(VGA text mode)是打印字符到屏幕的一种简单方式

为了在 VGA 字符模式中向屏幕打印字符,我们必须将它写入硬件提供的 VGA 文本缓冲区(VGA text buffer)。通常状况下,VGA 文本缓冲区是一个二维数组,它的内容将被实时渲染到屏幕。这个数组的元素被称作字单元(character cell),它使用下面的格式描述一个屏幕上的字符:
在这里插入图片描述

在这里插入图片描述

文本缓冲区最小单元:一个字(两个字节)

文本缓存区起始地址:0xB8000 (物理地址)

缓冲区大小:2x高度x宽度 以字符为单位

ld链接器

ld(Linker)是一个负责将目标文件和库文件链接成可执行文件或共享库的程序。在编译过程中,编译器将源代码编译成目标文件,然后ld将这些目标文件链接成可执行文件或共享库。

或者说

链接过程是将各式各样的.o文件链接为一个文件的过程。链接脚本描述连接器如何将这些输入文件(.o)文件映射为一个输出文件的,并且规定描述了输出文件的内存布局。几乎所有的链接脚本都是在做这些事情。

makefile语法

一般形式

语法

=相当于只要用到该变量,那么随着该变量的变化,用到该变量的变量也会变化。

HELLO = world
HELLO_WORLD = $(HELLO) world!

# This echoes "world world!"
echo $(HELLO_WORLD)

HELLO = hello

# This echoes "hello world!"
echo $(HELLO_WORLD)

:=相当于用到它的变量使用时所对应的变量的值在定义时才会改变

HELLO = world
HELLO_WORLD := $(HELLO) world!

# This echoes "world world!"
echo $(HELLO_WORLD)

HELLO = hello

# Still echoes "world world!"
echo $(HELLO_WORLD)

HELLO_WORLD := $(HELLO) world!

# This echoes "hello world!"
echo $(HELLO_WORLD)

?=作用是当某变量前面已经定义赋值过,则不执行本次定义赋值,否则执行本次赋值

CURDIR是Makefile的内嵌变量,自动设置为当前目录

在Makefile使用include关键字可以把别的Makefile包含进来,这很像C语言的#include,被包含的文件会原模原样的放在当前文件的包含位置。

mkinc自定义的名字

我们会在 Makefile 中调用另外的 Makefile 文件,呈现出 Makefile 的层级结构。

上层 make 过程要将所执行的 Makefile 中的变量传递给子 make 过程,需要明确地指出。

在 GNU make 中,实现此功能的指示符是 export。当一个变量使用 export 进行声明后,变量和它的值将被加入到当前工作的环境变量中,以后在 make 执行的所有规则的命令都可以使用这个变量。

预定义变量CC:i686-elf-gcc
预定义变量LD:ld
预定义变量AR:i686-elf-ar

在一个规则中,如果存在多个target,那么make将为每个target独立运行规则中的命令。$@是个自动变量,其内容为每次命令独立运过程中的target名称。

分号是分隔符,反斜线是换行符。像if语句块或for语句要写在一行时,必须使用分号进行分隔,在此期间如需进行换行则使用反斜线\进行换行即可。此外,注意if语句后的左中括号[前后都有有空格,双等号“==”表示相等符号,单等号“=”既可以表示相等也可表示赋值,其区别为:当比较时,比较符号左右都有空格;赋值时,等号左右没空格

源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看星猩的柴狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值