项目粗略框架
章节团体框架x86保护模式
https://i-blog.csdnimg.cn/img_convert/c7c39c7c3446b871735809792d924488.png
项目团体工程组织架构
Makefile文件(怎么编译链接)
d# 工具链前缀,如果是windows和mac,使用x86_64-elf-
# 如果是linux,使用x86_64-linux-gnu-
# 工具链前缀,如果是windows和mac,使用x86_64-elf-
# 如果是linux,使用x86_64-linux-gnu-
ifeq ($(LANG),)
TOOL_PREFIX = x86_64-linux-gnu-
else
TOOL_PREFIX = x86_64-elf-
endif
# GCC编译参数
CFLAGS = -g -c -O0 -m32 -fno-pie -fno-stack-protector -nostdlib -nostdinc #编译c文件时候给GCC传的编译相关的参数
# 目标创建:涉及编译、链接、二进制转换、反汇编、写磁盘映像
#创建我们最终要生成的操作系统的文件(disk.img)
all: source/os.c source/os.h source/start.S
$(TOOL_PREFIX)gcc $(CFLAGS) source/start.S # 编译这个汇编文件成目标文件
$(TOOL_PREFIX)gcc $(CFLAGS) source/os.c # 编译.c文件成目标文件
$(TOOL_PREFIX)ld -m elf_i386 -Ttext=0x7c00 start.o os.o -o os.elf #将生成的目标文件链接在一起,然后生成这个os.elf
${TOOL_PREFIX}objcopy -O binary os.elf os.bin #将os.elf文件转成.bin文件
${TOOL_PREFIX}objdump -x -d -Sos.elf > os_dis.txt #因为我们有时候需要看反汇编结果,所以需要将其反汇编转为txt,好随时打开查看
${TOOL_PREFIX}readelf -aos.elf > os_elf.txt
dd if=os.bin of=../image/disk.img conv=notrunc #将OS生成的二进制文件(os.bin)写到我们的磁盘文件(disk.img),这个文件会给qemu加载
# 清理
clean:
rm -f *.elf *.o
当我们去启动调试的时候,就会去实验tasks.json文件
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "启动qemu",
"type": "shell",
"command": "bash ${workspaceRoot}/script/qemu-debug-osx.sh",
"windows": {
// windows下特殊一些
"command": "${workspaceRoot}/script/qemu-debug-win.bat",
},
"linux":{
"command": "bash ${workspaceRoot}/script/qemu-debug-linux.sh",
},
"options": {
"cwd": "${workspaceRoot}/../image/"
}
},
]
}
qemu-debug-win.bat
start qemu-system-i386 -m 128M -s -S-drive file=disk.img,index=0,media=disk,format=raw //将disk.img当作系统盘去加载OS,
编译我们的工程
https://i-blog.csdnimg.cn/img_convert/703343d0cac548fca33ec9e8bd0585c4.png
make clean就会清除make编译天生的文件
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]