I am happy to announce that Mecrisp-Quintus,
an optimising native code Forth for 32 bit RISC-V and MIPS,
reached the first stable release!
Matthias Koch <m.c...@gmx.net> writes:
I am happy to announce that Mecrisp-Quintus,
an optimising native code Forth for 32 bit RISC-V and MIPS,
reached the first stable release!
Nice, congrats!
I am happy to announce that Mecrisp-Quintus,
an optimising native code Forth for 32 bit RISC-V and MIPS,
reached the first stable release!
The package also contains complete RISC-V example designs for FPGAs.
You can get it as usual on mecrisp.sourceforge.net
Best wishes,
Matthias Koch
Any thoughts on things you found in optimising performance of forth on Risc compared to x86, and Arm.
if there will be soon a mecrisp for RPI PICO?
Thank you!address space by convention. Conditional jump range is very short in M0.
Any thoughts on things you found in optimising performance of forth on Risc compared to x86, and Arm.I can comment on ARM vs RISC-V/MIPS only. ARM Cortex M0 offers eight registers only for most opcodes, r0 to r7, and requires special attention to load large constants or perform far calls, especially between RAM and flash memory that have large gap in
RISC-V offers 31 registers (and one hardwired zero-register) and loads/stores/calls any 32 bit constant or destination with two instructions at most. For a Forth compiler performing register allocation, the RISC-V one benefits a lot taking advantage ofthe additional registers available. Also the opcode format is simpler and more regular, which helps in compiler design complexity.
Besides that, one important conceptual difference is that ARM works with flags that are set by certain instructions and conditional jumps acting on these later, whereas RISC-V does not have flags, but uses "comparing jumps" like "beq x8, x9, label".Both ways are fine for Forth.
It's been a long time since I looked at ARM code, but I seem to recall there being means of conditional execution of instructions, rather than jumps. Is this something that is used in Forth easily? I don't recall details, but this might only beavailable on certain instruction set variants. I believe there are a lot of those.
available on certain instruction set variants. I believe there are a lot of those.It's been a long time since I looked at ARM code, but I seem to recall there being means of conditional execution of instructions, rather than jumps. Is this something that is used in Forth easily? I don't recall details, but this might only be
For short: Difficult to use in Forth, not available on ARM Cortex M0, very limited in M3, M4. Go read instruction set manuals!
I am happy to announce that Mecrisp-Quintus,
an optimising native code Forth for 32 bit RISC-V and MIPS,
reached the first stable release!
The package also contains complete RISC-V example designs for FPGAs.
You can get it as usual on mecrisp.sourceforge.net
Best wishes,
Matthias Koch
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 300 |
Nodes: | 16 (2 / 14) |
Uptime: | 38:47:29 |
Calls: | 6,708 |
Calls today: | 1 |
Files: | 12,241 |
Messages: | 5,353,575 |