6 ms·
Look at the Green Arrays F18, the "conclusion" that Forth reached: https://www.greenarraychips.com/home/documents/greg/PB003-110412-F18A.pdf https://www.greena
by bugfix-66 4y ago
Look at the Green Arrays F18, the "conclusion" that Forth reached:
https://www.greenarraychips.com/home/documents/greg/PB003-110412-F18A.pdf https://www.greenarraychips.com/home/documents/greg/PB003-11...
Here's a clear description of what each instruction does:
https://colorforth.github.io/forth.html https://colorforth.github.io/forth.html
Hilariously, the system has no logical OR, only AND and XOR and NOT, because "Inclusive-or is rarely needed."
This system was designed by Chuck Moore, father of Forth. Here is an entertaining video of him explaining the F18A stack machine and programming system:
https://youtu.be/0PclgBd6_Zs https://youtu.be/0PclgBd6_Zs
This is such a simple machine. I am planning to make a tiny emulator for my site. One could probably write an emulator in 80 lines of Go (one goroutine for each of the 144 cores).
- whatshisface 4y ago>The word */ multiplies by a ratio, with a double-length intermediate product. It eliminates the need for floating-point. Anyone who knows a lot about numeric stuff care to comment on this statement?
- bugfix-66 4y agoIt's just a fixed point instruction. Fixed point multiply: a*m times b*m yields (a*b)*m = a*m * b*m / m In the above, m is the fixed point 1. For example, 65536 for a 16.16 fixed point. The instruction allows you to multiply a*m by b*m and then divide by m, renormalizing your fixed point result. Chuck Moore thinks nobody needs floating point because fixed point is sufficient!
- Someone 4y agoAnd, importantly, the double-length intermediate result prevents the rapid loss of precision, compared to the naive alternatives of : */ * 65536 / : and : */ 65536 / * ;