Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flydeoo/mya
a fun project to create OS from scratch
https://github.com/flydeoo/mya
cprogramming-language operating-system x86assembly
Last synced: 5 days ago
JSON representation
a fun project to create OS from scratch
- Host: GitHub
- URL: https://github.com/flydeoo/mya
- Owner: flydeoo
- Created: 2023-11-12T11:16:56.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-02-21T07:37:57.000Z (4 months ago)
- Last Synced: 2024-03-05T17:36:27.808Z (4 months ago)
- Topics: cprogramming-language, operating-system, x86assembly
- Language: Assembly
- Homepage:
- Size: 92.8 KB
- Stars: 11
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Lists
- awesome-os - mya
README
# what is mya
![]()
**`mya`** is a fun project to create a tiny OS from scratch using **x86 assembly** and **C programming language**.
# how to use
You can either read each episode from the [doc section](#docs) or [Medium](#other-media).For each episode that includes code, there is a corresponding [release](https://github.com/flydeoo/mya/releases) with the same name as the episode.
# docs- [episode 0: introduction to the journey of making tiny OS](https://github.com/flydeoo/mya/blob/main/docs/episode%200%3A%20introduction%20to%20the%20journey%20of%20making%20tiny%20OS.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [`introduction`]
- [episode 1: my understanding of CPU and Memory interaction](https://github.com/flydeoo/mya/blob/main/docs/episode%201%3A%20my%20understanding%20of%20CPU%20and%20Memory%20interaction.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [`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](https://github.com/flydeoo/mya/blob/main/docs/episode%202%3A%20write%20our%20very%20first%20tiny%20bootloader.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [ `flat binary`, `assembler base address`, `org directive`, `far jump` ]
![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
- [ `writing a simple bootloader`, `using bios interrupt 0x10`, `qemu kickstart` ]
- [episode 3: Tracing Stack and Function Calls with GDB](https://github.com/flydeoo/mya/blob/main/docs/episode3%3A%20Tracing%20Stack%20and%20Function%20Calls%20with%20GDB.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [ `stack registers: SS, SP, BP` ]
![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
- [ `start using GDB`, `define stack`, `add some functionality to bootloader`, `start using makefile`, `trace stack` ]
- [episode 4: CPU interaction with memory and IO](https://github.com/flydeoo/mya/blob/main/docs/episode%204%3A%20CPU%20interaction%20with%20memory%20and%20IO.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [ `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](https://github.com/flydeoo/mya/blob/main/docs/episode%205%3A%20switch%20to%20protected%20mode.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [ `Global Descriptor Table (GDT)`, `CHS addressing`, `absolute vs relative addressing`, `protectd mode` ]
![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
- [ `writing second stage bootloader`, `implementing GDT`, `switch to protected mode`, `using bios interrupt 0x13 and CHS` ]
- [episode 6: migrate preparation](https://github.com/flydeoo/mya/blob/main/docs/episode%206%3A%20migrate%20preparation.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [ `why migrate to c` ]
![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
- [ `build toolchain (GCC, linker, assembler)` ]
- [episode 7: migrate to C](https://github.com/flydeoo/mya/blob/main/docs/episode%207%3A%20migrate%20to%20C.md)
![Static Badge](https://img.shields.io/badge/concepts-%20-blue)
- [ `linker script`, `compiler and linker options: -nostdlib -lgcc -ffreestanding` , `C compilation environment: Freestanding and Hosted`, `C call conventions` ]
![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
- [ `writing linker script`, `migrate from assembly to C`, `start writing kernel with C` ]
# Upcoming episodes
> More episodes will be determined soon.
# other media
You can also access these episodes on Medium via this link: [flydeoo](https://medium.com/@thisisflydeoo)