Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oresttokovenko/elements_of_computing_systems
"The Elements of Computing Systems: Building a Modern Computer from First Principles" by Noam Nisan and Shimon Schocken
https://github.com/oresttokovenko/elements_of_computing_systems
computer-science elements-of-computing-systems low-level-programming
Last synced: 11 days ago
JSON representation
"The Elements of Computing Systems: Building a Modern Computer from First Principles" by Noam Nisan and Shimon Schocken
- Host: GitHub
- URL: https://github.com/oresttokovenko/elements_of_computing_systems
- Owner: oresttokovenko
- Created: 2024-05-30T20:46:46.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-09-25T04:41:41.000Z (4 months ago)
- Last Synced: 2024-11-15T17:43:54.667Z (2 months ago)
- Topics: computer-science, elements-of-computing-systems, low-level-programming
- Language: Assembly
- Homepage:
- Size: 296 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Elements of Computing Systems
This repository contains my implementations and exercises from the book "The Elements of Computing Systems: Building a Modern Computer from First Principles" by Noam Nisan and Shimon Schocken, where I build a computer system from the ground up using hardware and software engineering principles. The software projects in chapters 6, 7, 8, 10, and 11 are written in Go, which I chose for its combination of simplicity, strong typing, and memory management with pointers. The solution to each chapter (if it doesn't involve completing existing files) can be found in the `_solution` directories.
## Table of Contents
- [Assembler](projects/ch06/_solution)
- [Virtual Machine](projects/ch08/_solution)
- [High-Level Language](projects/ch09/_solution)
- [Compiler](projects/ch11/_solution)
- [Operating System](projects/ch11/_solution)## Assembler
Implementation of a two-pass assembler for the Hack assembly language, converting assembly code into machine code.## Virtual Machine
Development of a virtual machine that translates VM commands into Hack assembly, providing a high-level abstraction for programming.## High-Level Language
Writing high-level programs in Jack, showcasing the full stack from high-level code to hardware execution.## Compiler
Construction of a compiler for the Jack programming language, transforming high-level Jack code into VM commands.## Operating System
Creation of a simple operating system that provides essential services for the Jack programming environment.## Usage
To use the implementations, follow the instructions provided in each module's README and run the provided scripts or programs as specified.