{"id":16833256,"url":"https://github.com/rejunity/cs-from-scratch","last_synced_at":"2026-01-04T02:09:31.203Z","repository":{"id":139192260,"uuid":"213238715","full_name":"rejunity/cs-from-scratch","owner":"rejunity","description":"Zero dependency self contained - Hello world!","archived":false,"fork":false,"pushed_at":"2019-11-27T16:58:09.000Z","size":14,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-15T15:54:35.340Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rejunity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-06T20:26:51.000Z","updated_at":"2023-10-30T19:40:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"37d34c57-4ff2-40fd-9c20-ad77aa7a32da","html_url":"https://github.com/rejunity/cs-from-scratch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rejunity%2Fcs-from-scratch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rejunity%2Fcs-from-scratch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rejunity%2Fcs-from-scratch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rejunity%2Fcs-from-scratch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rejunity","download_url":"https://codeload.github.com/rejunity/cs-from-scratch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244135905,"owners_count":20403797,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T11:52:52.602Z","updated_at":"2026-01-04T02:09:31.160Z","avatar_url":"https://github.com/rejunity.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# cs-from-scratch\nZero dependency self contained - Hello world!\n\n## Computer Architecture\n* Lectures:\n    * How to build CPU+I/O in VHDL: https://opencores.org/websvn/listing/cpu_lecture\n* Books:\n    * [Computer Architecture: A Quantitative Approach](https://www.amazon.com/Computer-Architecture-Quantitative-John-Hennessy/dp/012383872X) by John L. Hennessy, and David A. Patterson.\n    * [Computer Systems: A Programmer's Perspective](https://www.amazon.com/Computer-Systems-Programmers-Perspective-3rd/dp/013409266X) by Randal E. Bryant, and David R. O'Hallaron.\n    * [Structured Computer Organization](https://www.amazon.com/Structured-Computer-Organization-Andrew-Tanenbaum/dp/0132916525) by Andrew S. Tanenbaum, and Todd Austin.\n\n## Compiler\n* Overview:\n    * https://softwareengineering.stackexchange.com/questions/165543/how-to-write-a-very-basic-compiler\n    * https://wiki.osdev.org/Making_a_Compiler\n* Online books:\n    * [Let's Build a Compiler](https://compilers.iecc.com/crenshaw) by Jack Crenshaw. Introduction to compiler construction written from 1988 to 1995.\n    * [Crafting Interpreters](http://craftinginterpreters.com) by Bob Nystrom. Autor of Dart. Written from 2015-2018. Source code: https://github.com/munificent/craftinginterpreters\n    * [Writing Your Own Toy Compiler Using Flex, Bison and LLVM](http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/)  by Loren Segal. Written around 2009. Source code: https://github.com/lsegal/my_toy_compiler\n* Books:\n    * The \"Dragon Book\" [Compilers: Principles, Techniques, and Tools](https://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811) by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman.\n    * [Modern Compiler Design](https://www.amazon.com/Modern-Compiler-Design-Dick-Grune/dp/1461446988) by Dick Grune, van Reeuwijk, Kees, Henri E. Bal, Ceriel J.H. Jacobs, Koen Langendoen.\n    * [Compiler Construction: Principles and Practice](https://www.amazon.com/dp/0534939724/) by Kenneth C. Louden\n    * [Compiler Construction](https://www.amazon.com/dp/0201403536/) by Niklaus Wirth\n    * [Writing An Interpreter In Go](https://interpreterbook.com/) by Thorsten Ball\n    * [Writing A Compiler In Go](https://compilerbook.com/) by Thorsten Ball\n* Parsers: https://en.wikipedia.org/wiki/Comparison_of_parser_generators\n* Intros:\n    * “Writing a simple Code Generator” Gabriel Sassone - https://jorenjoestar.github.io/post/writing_a_simple_code_generator/\n    * “I wrote a programming language. Here’s how you can, too.” https://www.freecodecamp.org/news/the-programming-language-pipeline-91d3f449c919/\n* Tips:\n    * Learn COFF and PE formats(for windows), alternatively understand ELF format(for Linux)\n    * Learn Flex and Bison first.\n\n## OS\n* Overview: https://wiki.osdev.org/Main_Page\n    * Books: https://wiki.osdev.org/Books\n* Books\n    * MINIX: Operating Systems: Design and Implementation (Second Edition): Andrew S. Tanenbaum, Albert S. Woodhull: 9780136386773: Amazon.com: Books\n        * Online: https://mcdtu.files.wordpress.com/2017/03/tanenbaum_woodhull_operating-systems-design-implementation-3rd-edition.pdf\n        * https://www.amazon.com/Operating-Systems-Design-Implementation-3rd/dp/0131429388/\n    * The Design of the UNIX Operating System: Maurice J. Bach: 9780132017992: Amazon.com: Books\n    * Understanding the Linux Kernel, Third Edition: Daniel P. Bovet, Marco Cesati: 9780596005658: Amazon.com: Books\n    * Modern Operating Systems, Andrew S. Tanenbaum\n    * Operating System Concepts, Abraham Silberschatz, Peter B. Galvin, Greg Gagne. https://www.amazon.com/Operating-System-Concepts-Seventh-Edition/dp/0471694665/\n    * Operating systems: Internals and Design Principles, William Stallings\n* Course\n    * Udemy — Build Your Own RealTime OS (RTOS) From Ground Up™ on ARM https://www.udemy.com/rtos-building-from-ground-up-on-arm-processors/\n* Online Books \u0026 Tutorials\n    * The little book about OS development, Erik Helin, Adam Renberg. https://littleosbook.github.io\n    * Writing a Simple Operating System from Scratch, N.Blundell. http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf\n    * Step-by-Step tutorial “How to create an OS from scratch!” Implementation for “Writing a Simple Operating System from Scratch” by Blundell - https://github.com/cfenollosa/os-tutorial\n    * Bran's kernel development tutorials - http://www.osdever.net/bkerndev/index.php\n    * Roll your own toy UNIX-clone OS - http://www.jamesmolloy.co.uk/tutorial_html/index.html\n    * http://www.osdever.net/tutorials/\n* Source:\n    * https://gitlab.com/ReturnInfinity/Pure64 - Pure64 is a software loader that sets the computer into a full 64-bit state with no legacy compatibility layers and also enables all available CPU Cores in the computer. The only requirement for building Pure64 is NASM and GCC.\n    * https://github.com/klange/toaruos (ToaruOS is a hobbyist, educational, Unix-like operating system built entirely from scratch and capable of hosting Python 3 and GCC. It includes a kernel, bootloader, dynamic linker, C standard library, composited windowing system, package manager, and several utilities and applications.)\n    * https://github.com/dimonomid/tneo TNeo is a compact and fast real-time kernel for embedded 32/16 bits microprocessors.\n* Ideas:\n    * Your computer is already a distributed system. Why isn’t your OS?  https://www.usenix.org/legacy/event/hotos09/tech/full_papers/baumann/baumann.pdf\n    * I’m writing my own OS - https://gusc.lv/2012/11/im-writing-my-own-os/, https://gusc.lv/2012/11/im-writing-my-own-os-p2/\n    * How I ended up writing a new real-time kernel https://dmitryfrank.com/articles/how_i_ended_up_writing_my_own_kernel\n\n## Plan of attack\n* OS first steps\n    * Boot sequence - https://wiki.osdev.org/Boot_Sequence\n    * Simple kernel for 32-bit x86 and boot loader.  https://wiki.osdev.org/Bare_bones\n    * 64-bit x86 https://gitlab.com/ReturnInfinity/Pure64\n    * https://wiki.osdev.org/Category:Babystep\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frejunity%2Fcs-from-scratch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frejunity%2Fcs-from-scratch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frejunity%2Fcs-from-scratch/lists"}