oberonc
Oberon_SDRAM
oberonc | Oberon_SDRAM | |
---|---|---|
7 | 1 | |
140 | 7 | |
- | - | |
4.1 | 10.0 | |
about 1 month ago | about 6 years ago | |
Modula-2 | ||
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
oberonc
- Object-Oriented Programming in Oberon-2 [pdf]
-
A quick look at destination-driven code generation
This technique was also described by David R. Hanson in "Code Improvement via Lazy Evaluation", 1980 [1] and "Simple Code Optimizations", 1983 [2].
[0] https://github.com/lboasso/oberonc/blob/master/doc/Moe00b.pd...
-
Ask HN: Why are there no traditional language compilers that target the JVM?
The Oberon programming language is 37 years old. Since it is a memory safe language a compiler for the JVM can be written (with some workarounds), for example see the self-hosting compiler oberonc [0].
[0] https://github.com/lboasso/oberonc
- Oberon, Plan 9 and Inferno
-
Modula-2 and Oberon (2007) [pdf]
If you want to try out only the Oberon language, you might be interested in oberonc [0] an oberon-07 self-hosting compiler for the JVM. There are other several Oberon implementations for different platforms listed here[1]
[0] https://github.com/lboasso/oberonc
[1] http://oberon07.com/compilers.xhtml
- Project Oberon
-
The School of Wirth
When I benchmarked oberonc [0], an oberon-07 self-hosting compiler for the JVM, it took about 100 ms with a hot VM on a old Intel i5 @ 2.80GHz. That compiler follows the same one-pass compilation approach.
[0] https://github.com/lboasso/oberonc
Oberon_SDRAM
-
Project Oberon
This project is still a great example of a complete computer design, starting from Niklaus Wirth's own RISC5 CPU (not a RISC-V) and very simple peripherals over the OS, runtime/garbage collector, compiler, GUI and simple example applications.
One problem of the original implementation is that it was based on an old Xilinx Spartan 3 development board. This is not only no longer available, but it is one of the few FPGA boards that used 32 bit wide fast (12 ns IIRC) asynchronous SRAM chips. Wirth's hardware design relies heavily on this.
Some years ago, there was a compatible board, the OberonStation. However, it seems this is no longer manufactures: https://pcper.com/2015/12/meet-the-oberonstation-kid-friendl...
However, some modified designs exist that implement a cache in FPGA block RAM and an SDRAM controller. These can be used one more recent FPGA boards:
- FleaFPGA "Ohm" board with a Lattice ECP5 FPGA and 32 MB RAM (https://fleasystems.com/fleaFPGA_Ohm.html) - https://github.com/Basman74/Oberon_SDRAM
- Radiona ulx3s, another ECP5 in an open source design (https://github.com/emard/oberon) - https://github.com/emard/oberon
- PapilioPro using a Xilinx Spartan 6 LX, another open source PCB design (https://papilio.cc/index.php?n=Papilio.PapilioPro) - https://opencores.org/projects/oberon_sdram
Shameless plug: my student Rikke's port of Project Oberon to RV32I (this is a real RISC-V), however, we still need to find some time to build an FPGA-based SoC. Currently, it runs in emulation: https://github.com/solbjorg/oberon-riscv
What are some alternatives?
SquirrelJME - SquirrelJME is a Java ME 8 Virtual Machine for embedded and Internet of Things devices. It has the ultimate goal of being 99.9% compatible with the Java ME standard.
oberon
wasm.cljc - Spec compliant WebAssembly compiler, decompiler, and generator
A2OS - Unofficial mirror of the ETH A2 repository
Oberon07ru - Modification for original Oberon-07 of Anton Krotov
THM-Oberon
asmble - Compile WebAssembly to JVM and other WASM tools
tracer - Graal based x86 interpreter with separate execution trace analyzer
oberon-riscv - Oberon RISC-V port, based on Samuel Falvo's RISC-V compiler and Peter de Wachter's Project Norebo. Part of an academic project to evaluate Project Oberon on RISC-V.
renjin - JVM-based interpreter for the R language for the statistical analysis.