mya is a fun project to create a tiny OS from scratch using x86 assembly and C programming language.
You can either read each episode from the doc section or Medium.
For each episode that includes code, there is a corresponding release with the same name as the episode.
- episode 0: introduction to the journey of making tiny OS
- [
introduction]
- [
- episode 1: my understanding of CPU and Memory interaction
- [
the need for labels,era of uni programming and multiprogramming,linker and Hardware/software based relocation,segmentationm,OS loader]
- [
- episode 2: write our very first tiny bootloader
- [
flat binary,assembler base address,org directive,far jump]
- [
- [
writing a simple bootloader,using bios interrupt 0x10,qemu kickstart]
- [
- episode 3: Tracing Stack and Function Calls with GDB
- [
stack registers: SS, SP, BP]
- [
- [
start using GDB,define stack,add some functionality to bootloader,start using makefile,trace stack]
- [
- episode 4: CPU interaction with memory and IO
- [
cpu interaction with RAM and ROM via address and control bus,CPU address space,binary black magic,Memory mapped I/O,Isolated mapped I/O]
- [
- episode 5: switch to protected mode
- [
Global Descriptor Table (GDT),CHS addressing,absolute vs relative addressing,protectd mode]
- [
- [
writing second stage bootloader,implementing GDT,switch to protected mode,using bios interrupt 0x13 and CHS]
- [
- episode 6: migrate preparation
- [
why migrate to c]
- [
- [
build toolchain (GCC, linker, assembler)]
- [
- episode 7: migrate to C
- [
linker script,compiler and linker options: -nostdlib -lgcc -ffreestanding,C compilation environment: Freestanding and Hosted,C call conventions]
- [
- [
writing linker script,migrate from assembly to C,start writing kernel with C]
- [
More episodes will be determined soon.
You can also access these episodes on Medium via this link: flydeoo