Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
CPUlator Computer System Simulator (01xz.net)
56 points by hosteur on July 16, 2023 | hide | past | favorite | 4 comments


CPUlator has played an instrumental role in my ARM-based Assembly explorations. One can simulate a full system, including not just the processor, but also the peripherals and the system-on-a-chip interconnects, mimicking a real system's behavior. I really appreciate the ability to inspect the memory as well as the individual registers as you are running a program.

The possibility to show real-time visual feedback and debugging capabilities provides an excellent avenue for people to understand the nuances of computer architecture. Through CPUlator, I have been able to guide learners through the use of ARMv7 assembly instructions and their usage who might not have access to ARM hardware themselves. I can't recommend this tool enough.


I wonder if MAME would work as an open-source alternative for these simulations. The built-in debugger and memory views cover most of that, and it doesn't take much to write a minimal driver that messes with some input file [1].

But if you do want some visual feedback like LEDs and such, you would have to write a layout and input logic for that (AFAIK has been done for MIDI synths).

It would also be more appropriate for shellcode / nostdlib experiments, although it's not clear how well CPUlator handles dynamic linking / relocations in their ELF executable support (seems like they build on their server [2], but run in a custom interpreter?)

[1]: https://qufb.gitlab.io/writeups/2023/02/26/Put-A-Sonic-On-It... [2]: https://cpulator.01xz.net/doc/#compiling


Oh wow, it supports the NIOS2. I remember my first real "engineering" internship basically involved bringing up a pseudo-OS for this thing, it was super new at the time, and the software - at least with whatever license my employer had at the time - was extremely limited. Essentially no OS, no memory protection, no threading (mostly needed for event dispatch on the platform I was working on) - I think other "softcore" CPUs existed at the time that had linux options but presumably I was being given fairly "they're an intern" tasks so I'm not sure how much they really care. Certainly the bulk of their interns were EE and I was the only one who could actually write software at the time, but on the other hand that meant I didn't know EE :D





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: