Mya
a fun project to create OS from scratch
Install / Use
/learn @flydeoo/MyaREADME
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
