A hobby 32-bit x86 kernel developed in C and NASM assembly, with the goal of exploring low-level system programming, virtual memory/segmentation, interrupt handling and general OS functionalities
- C
- x86 Assembly (NASM)
- GNU Toolchain
- QEMU
- GRUB & Multiboot specification
- Physical frame allocator (PFA) using bitmap-based tracking for 4GB address space
- Support for dynamic allocation/deallocation with memory map parsing from multiboot bootloader
- Virtual memory allocator (VMA) with page directory/page table management
- Manual page table creation with recursive page directory mapping for virtual-to-physical translation
- Proper TLB invalidation handling
- Interrupt Descriptor Table setup
- Assembly stubs for stack frame management and End-of-Interrupt signaling
- Exception handlers for page faults, double faults, and other CPU exceptions
- PIC (Programmable Interrupt Controller) configuration and remapping
- Hardware interrupt support including keyboard input handling
- Higher-half kernel mapping (0xC0000000+) for protected memory space
- Stack management and protection
- Reservation of system memory regions (BIOS areas, VGA memory, kernel space)
- GDT (Global Descriptor Table) setup with multiple privilege levels
- Paging implementation with both identity mapping and higher-half mapping
- Transition from assembly bootloader to C execution environment
July - August 2025
Run the default make target