前言
在学完了计算机组成原理和王爽的汇编语言后,虽然操作系统的理论知识能看懂了,但做起xv6和ucore实验还是有一定难度,所以还是得补一补x86汇编的知识。
环境搭建:
因为书中的工具包和环境都是win系统,而本人使用的是Mac系统,所以最终决定采用vmware虚拟机+Ubuntu的形式
软件下载
nasm编译器:sudo apt-get install nasm
virtualBox:Oracle VM VirtualBox
bochs:Bochs x86 PC emulator - Browse /bochs/2.6.9 at SourceForge.nethttps://www.virtualbox.org/)
sudo apt-get install bochs
建议使用包的方式手动安装bochs
下载bochs后注意安装Bochs的环境
sudo apt-get install build-essential xorg-dev libgtk2.0-dev
软件配置
virtualBox
作用:用于生成.vhd虚拟硬盘文件
打开virtualBox - File - Virtual Media Manager - create - VHD格式 -Fixed size - 选择保存的目录和大小
bochs
使用bochs虚拟机的原因:因为大部分代码调试工具都要运行在操作系统上,而实验代码都是跑在虚拟裸机上,因此采用自带调试功能的bochs虚拟机
bochs下载安装好后的目录
首先配置bochsrc
编译nasm汇编代码,使用书中c_05的代码
PS:在win中是以.asm为后缀,而在Linux中是以.s为后缀
nasm -f bin c05_mbr.s -o c05_mbr.bin
使用Linux的dd命令将该可执行文件写入到vhd磁盘当中
sy@sy-virtual-machine:~/MyOs/X86/codes/c05$ dd if=c05_mbr.bin of=~/x86work.vhd bs=512 count=1 conv=notrunc
测试
进入到bochs的目录下执行
sy@sy-virtual-machine:~/bochs-2.6.9$ bochs -f bochsrc.txt
输入6后回车或者默认直接回车进入到调试模式
再输入c回车直至代码结束
显示Label offset:00302D 即为成功!!!