Comment

Comment by the_duke

While somewhat irrelevant for a majority of developers, it feels great to understand how computers actually work.

Even many higher education IT programs often barely cover the underpinnings anymore.

I'm currently embarking on a fun little "from first principles" challenge:

Imagine a post-apocalyptic world where computers are a relic of the past.

You stumble upon a functioning device with a screen and keyboard. When powered on, all you get is a bare metal "assembly interpreter". You can type in riscv64 assembly instructions and they are executed. You can print to the screen via a UART. So you don't even get an assembler/linker to build on.

From there you have to build up an entire new software stack, with a proper language with compiler/vm, an operating system, a standard library, basic userspace tools, a UI, ...

Simulating the device and console is easy with qemu-system-riscv64 and a a bit of assembly.

It's very challenging, but also rewarding to study up/relearn and implement all the basic underpinnings of computers, all the way from hardware (CPU, memory, IO devices, ISAs) up to a GUI stack.

Hacking together a simple OS isn't actually all that hard when your hardware is constrained to a specific device. And writing a very simple language in assembly also isn't that bad. You can build progressively better languages on top of that.

I'd love to turn this into a somewhat guided, interactive learning experience that runs in the browser via tinyemu [1] or similar, but I won't have time for that.

[1] https://bellard.org/tinyemu/

parent the_duke 6 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton