摘要:
ucore是清华大学操作系统课程的实验内核,也是一个开源项目,是不可多得的非常好的操作系统学习资源https://github.com/chyyuu/ucore_lab.git, 各位同学可以使用git下载源码和文档。本文我会对项目中的code/lab1/boot/bootasm.S文件进行完全注释。 1 #include asm.h头文件中包含了一些宏定义,用于定义gdt,gdt是保护模式使用的全局段描述符表,其中存储着段描述符。 2 3 # Start the CPU: switch to 32-bit protected mode, jump into C. 4 # The BIOS l 阅读全文
摘要:
addprefix.$(addprefix , )功能:把加到name序列中的每一个元素前面。result = $(addprefix %., c cpp)test: @echo $(result)输出:%.c %.cppaddsuffix 用法与addprefix相同,只是一个是前缀,一个是后缀。if.$(if , ,)功能:参数是 if的表达式,如果其返回的为非空字符串,那么这个表达式就相当于返回真,于是,会被计算,返回计算结果字符串;否则会被计算,返回计算结果字符串。可以省略。suffix := result1 := $(if $(suffix), $(addprefix %.,$... 阅读全文
摘要:
在makefile中,经常能看到这种赋值方式:MyNumber := 123这种方式洋名叫做expansion assignment, 翻译过来叫扩展赋值, 我一般就叫冒号等号。这位同学就问了,那么它和普通的等号有啥不一样捏?咱们废话少说,直接看代码。ANIMAL = FROGVAR = "$(ANIMAL) DOG CAT"ANIMAL = TIGERtest: echo $(VAR)输出是: TIGER DOG CAT再来看冒号等号的输出和上面有啥不一样:ANIMAL := FROGVAR := "$(ANIMAL) DOG CAT"ANIMAL : 阅读全文