计算机系统结构与操作系统实验三(5)-中断

实验要求

将中断处理程序放到C里编写

实验过程

鉴于代码相比之前,多出了很多配套的固定代码,因此代码量和代码中来突增,本文就不再一个一个贴代码了,需要的直接去看我上传在csdn的代码吧(文末有链接)

文件结构
计算机系统结构与操作系统实验三(5)-中断_第1张图片
主要看interrupt中的异常处理和makefile文件中的编译命令改动
计算机系统结构与操作系统实验三(5)-中断_第2张图片计算机系统结构与操作系统实验三(5)-中断_第3张图片
makefile

.PHONY:build burn

mbr_source=boot/mbr.S
mbr_target=boot/mbr.bin
loader_source=boot/loader.S
loader_target=boot/loader.bin
hard_disk=/home/lhj/Public/bochs/bin/hd60M.img

build:
		nasm -I boot/include/ -o $(mbr_target) $(mbr_source)
		nasm -I boot/include/ -o $(loader_target) $(loader_source)
		gcc -m32 -I lib/kernel -m32 -I lib/ -m32 -I kernel/ -c -fno-builtin -o build/main.o kernel/main.c
		gcc -m32 -I lib/kernel -m32 -I lib/ -m32 -I kernel/ -c -fno-builtin -o build/interrupt.o kernel/interrupt.c
		gcc -m32 -I lib/kernel -m32 -I lib/ -m32 -I kernel/ -c -fno-builtin -o build/init.o kernel/init.c
		nasm -f elf -o build/print.o lib/kernel/print.S
		nasm -f elf -o build/kernel.o kernel/kernel.S
		ld -m elf_i386 -Ttext 0xc0001500 -e main -o build/kernel.bin build/main.o build/init.o build/interrupt.o build/print.o build/kernel.o
burn:
		dd if=$(mbr_target) of=$(hard_disk) bs=512 count=1 conv=notrunc
		dd if=$(loader_target) of=$(hard_disk) bs=512 count=3 seek=2 conv=notrunc
		dd if=./build/kernel.bin of=$(hard_disk) bs=512 count=200 seek=9 conv=notrunc

一键运行

更改run.sh
计算机系统结构与操作系统实验三(5)-中断_第4张图片

计算机系统结构与操作系统实验三(5)-中断_第5张图片
计算机系统结构与操作系统实验三(5)-中断_第6张图片

遇到的小问题

1.缺少相关库,需要完善编译环境
计算机系统结构与操作系统实验三(5)-中断_第7张图片
解决方法:Ubuntu 编译出现fatal error: bits/libc-header-start.h: No such file or directory

本实验所有源码计算机系统结构与操作系统实验三bochs源代码

你可能感兴趣的:(计算机系统结构与操作系统,bochs,ubuntu,操作系统实验)