Awesome
what is mya
<p align="center"> <img src="https://repository-images.githubusercontent.com/717717871/cb51134d-cf2a-4552-b633-7acae2573303" alt="mya" style="width: 700px;"> </p>mya
is a fun project to create a tiny OS from scratch using x86 assembly and C programming language.
<br><br><br>
how to use
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. <br><br><br>
docs
- episode 0: introduction to the journey of making tiny OS
<br><br> <br><dl><dd><dl><dd><dl><dd>[
introduction
]</dd></dl></dd></dl></dd></dl> <br>
- episode 1: my understanding of CPU and Memory interaction
<br><br> <br><dl><dd><dl><dd><dl><dd>[
the need for labels
,era of uni programming and multiprogramming
,linker and Hardware/software based relocation
,segmentationm
,OS loader
]</dd></dl></dd></dl></dd></dl> <br>
- episode 2: write our very first tiny bootloader
<br><br> <br><dl><dd><dl><dd><dl><dd>[
flat binary
,assembler base address
,org directive
,far jump
]</dd></dl></dd></dl></dd></dl><hr> <br><dl><dd><dl><dd><dl><dd>[writing a simple bootloader
,using bios interrupt 0x10
,qemu kickstart
]</dd></dl></dd></dl></dd></dl> <br>
- episode 3: Tracing Stack and Function Calls with GDB
<br><br> <br><dl><dd><dl><dd><dl><dd>[
stack registers: SS, SP, BP
]</dd></dl></dd></dl></dd></dl><hr> <br><dl><dd><dl><dd><dl><dd>[start using GDB
,define stack
,add some functionality to bootloader
,start using makefile
,trace stack
]</dd></dl></dd></dl></dd></dl> <br>
- episode 4: CPU interaction with memory and IO
<br><br> <br><dl><dd><dl><dd><dl><dd>[
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
]</dd></dl></dd></dl></dd></dl> <br>
- episode 5: switch to protected mode
<br><br> <br><dl><dd><dl><dd><dl><dd>[
Global Descriptor Table (GDT)
,CHS addressing
,absolute vs relative addressing
,protectd mode
]</dd></dl></dd></dl></dd></dl><hr> <br><dl><dd><dl><dd><dl><dd>[writing second stage bootloader
,implementing GDT
,switch to protected mode
,using bios interrupt 0x13 and CHS
]</dd></dl></dd></dl></dd></dl> <br>
- episode 6: migrate preparation
<br><br> <br><dl><dd><dl><dd><dl><dd>[
why migrate to c
]</dd></dl></dd></dl></dd></dl><hr> <br><dl><dd><dl><dd><dl><dd>[build toolchain (GCC, linker, assembler)
]</dd></dl></dd></dl></dd></dl> <br>
- episode 7: migrate to C
<br><br> <br><dl><dd><dl><dd><dl><dd>[
linker script
,compiler and linker options: -nostdlib -lgcc -ffreestanding
,C compilation environment: Freestanding and Hosted
,C call conventions
]</dd></dl></dd></dl></dd></dl><hr> <br><dl><dd><dl><dd><dl><dd>[writing linker script
,migrate from assembly to C
,start writing kernel with C
]</dd></dl></dd></dl></dd></dl>
Upcoming episodes
More episodes will be determined soon.
other media
You can also access these episodes on Medium via this link: flydeoo