大号在练葵花宝典 发表于 2024-12-5 19:14:17

项目粗略框架

章节团体框架

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]
查看完整版本: 项目粗略框架