goasm - a Go assembly generator

Recently, I’ve been learning Go. One thing I’ve learned is that the Go compiler generates its own assembly language. There’s a great talk by Rob Pike about it. While I was learning, I began to wish there was a tool similar to the Compiler Explorer (more commonly referred to as Godbolt), but for Go assembly. So I built goasm, a Go assembly generator. Details The design is straightforward. It prints the Go code to a...

lc2.js - an LC-2 Simulator in JS

The book “Introduction to Computing Systems: from Bits & Gates to C & Beyond” by Patt & Patel introduces in some detail a computer called LC-2. This computer never physically existed, but the publisher’s website includes Windows and Unix versions of a simulator for the computer. I couldn’t get the Unix version to run on my system, and I didn’t want to dual-boot just for that, so I decided to write a JavaScript simulator. And...

Virtual Memory Differences

Previously, we’ve been looking at how POSIX specifies memory management, an academic design for virtual memory and BSD virtual memory in particular: BSD Virtual Memory OpenBSD Virtual Memory Next, let’s look at the differences between the virtual memory systems of NetBSD, OpenBSD, Linux, and OpenIndiana. History First, let’s give just a tiny summary of where each of these OSes come from. We covered the history of BSD in the article on BSD Virtual Memory, so...