十分鐘完成的操做系統at&t版本-《一個操做系統的實現》

之前看了《一個操做系統的實現》這本書,使用了nasm彙編和bochs虛擬機來編寫一個「操做系統」。作了清華大學ucore實驗後,我感受使用at&t彙編和qemu虛擬機來實現一個「操做系統」更加容易調試操做系統,所以改寫了成at&t版本。bash

at&t彙編版本代碼以下:markdown

.code16
.section .text
.global _start 
_start:
  movw %cs, %ax
  movw %ax, %ds
  movw %ax, %ss
  call DispStr
loop1:
  jmp loop1

DispStr:
  movw $msg, %ax
  movw %ax, %bp
  movw $16, %cx
  movw $0x1301, %ax
  movw $0x000c, %bx
  movb $0x00, %dl
  int $0x10
  ret
msg:
  .ascii "Hello, OS world!"
  .org 510
  .word 0xAA55
複製代碼

接下來使用as彙編、ld連接:oop

as -o boot.o boot.s
ld -Ttext=0x7c00 --oformat binary -o boot.bin boot.o
複製代碼

接下來製做一個512KB的虛擬硬盤,將上面生成的「操做系統」寫入第一個扇區。ui

dd if=/dev/zero of=boot.img count=1000
dd if=boot.bin of=boot.img conv=notrunc
複製代碼

接着啓動qemu虛擬機,以下,就是模擬插入boot.img硬盤,不須要配置文件,比bochs更方便。spa

qemu-system-x86_64 -hda boot.img -monitor stdio
複製代碼

成功,以下圖:操作系統

quicker_d7118466-811e-41f7-a0e9-d2409e098768.png

qemu不用配置文件真的很方便,加上啓動參數-S -s就能使用gdb單步調試了。3d

相關文章
相關標籤/搜索