Forth mapa jezgara
Ovo je Forth čije je jezgro pisano ručno u asembleru, posebno za svaku porodicu procesora: od 8086 i Z80, preko Cortex-M i RISC-V, do WASM-a i GPU-a. Iznad svih jezgara radi isti Forth, a svako jezgro se proverava protiv iste reference, forth.c.
Ekran na vrhu strane je mali sistem sa prozorima. Crta ga Forth (platno.fs) u WASM jezgru od 8752 bajtova, pravo na GPU kroz WebGL2. JavaScript samo prenosi događaje i bafer. Tabele ispod su ispisane iz istih podataka koje čita i taj ekran, pa se uvek slažu.
Prozor Demo radi kao demo iz vremena kad su se merili u kilobajtima. Šejder je program: 3D logo, tunel i plazma se biraju dugmetom, a „film“ ih ređa jedan za drugim. Skroler preko slike crta Forth, svaki kadar iznova.
Još na ovom serveru: signal aplikacije (osciloskop, spektar, vodopad, mreža — 8 kanala, sve računa Forth u jezgru) · GPU izlog (isti Forth programi kao WebGL2 šejderi, mnogo malih programa nad jednim ulazom) · kamera (slika sa kamere pravo u GPU, pokret i praćenje u Forth-u).
Porodice
Jedno ručno jezgro po porodici procesora, isti Forth iznad; sudija je forth.c
| Porodica | Čipovi i mašine | Ćelija | Domaćin | Jezgro | Testovi |
|---|---|---|---|---|---|
| Thumb-2 | Cortex-M3/M4/M7, R5F (STM32 F1/F4/G4/H7, AM62/AM64 M4F i R5F) | 32 | Zephyr, goli čip; isto jezgro i pod Linux-om (BBB) | radi, i na pravoj BBB | 53/53 |
| Thumb-1 | Cortex-M0, M0+ (STM32 F0, nRF51, RP2040) | 32 | Zephyr, goli čip | popravljen, čeka proveru | 22/22 |
| x86-64 | server, radna mašina (Ryzen) | 32 i 64 | nginx, konzola forth | radi | 38/38 |
| x86-32 | i386 i noviji, Linux (int 0x80), bez libc | 32 | Linux (goli sistemski pozivi) | radi | 34/34 |
| DOS 16-bit | 8086/8088 i noviji, realni režim, .COM (jezgro 563 B) | 16 | MS-DOS, FreeDOS, dosbox-x | radi | 29/29 |
| DOS 32-bit | 386+, zaštićeni režim bez ekstendera, sopstveni GDT (.EXE 94 KB) | 32 | DOS bez EMM386, dosbox-x | radi | 34/34 |
| WASM | pregledač | 32 → 64 | pregledač | radi | 19/19 |
| SPIR-V | GPU preko Vulkana: Vega 8, NVIDIA, Intel, llvmpipe | 32 | GPU, hiperparalelno | radi | 19/19 |
| PTX | GPU NVIDIA (RTX 5060 Ti na k3) | 32 + f32 | GPU, hiperparalelno | provereno | 19/19 |
| AArch64 | Cortex-A53/A72: RPi Zero 2 W, RPi 3/4, AM62/AM64 A53, ARM serveri | 64 | goli čip, Linux | provereno | — |
| ARMv6 | ARM1176: RPi Zero, Zero W; isti kod na Cortex-A8 (BeagleBone Black) | 32 | goli čip, Linux | provereno, prava ploča BBB | 25/25 |
| RISC-V | RV32IMC: ESP32-C3/C6, CH32V, GD32VF | 32 | Zephyr, goli čip | provereno | — |
| Xtensa | ESP32, ESP32-S2/S3 (LX6, LX7) | 32 | QEMU dc233c; ESP32/S2/S3 se gradi | provereno u QEMU, ploča ne | 34/34 |
| C2000 | TI Piccolo TMS320F2803x/F2806x (bajt je 16 bita) | 16 ili 32 | goli čip; TI cl2000 + sopstveni simulator, pravo TI kodiranje | provereno u simulatoru, ploča ne | 35/35 |
| PRU | TI PRU-ICSS na AM335x/AM64 (bez prekida i keša) | 32 | goli čip, remoteproc; pravi PRU0 na BeagleBone Black | provereno, pravi PRU0 | 34/34 |
| Z80 | Z80 i srodni | 16 | goli čip | provereno | — |
| 8051 | 8051, 8052 | 16 | goli čip | provereno | — |
| PIC | PIC16 (F18855, F17125) | 16 | goli čip; pravi PIC16F17125 kroz PICkit 5 | provereno, pravi čip | 26/26 |
Nove mete
Mete koje je Miki tražio 28.9.; QEMU = može se dokazati na bez ploče
| Meta | Procesor | Porodica jezgra | Dokaz bez ploče | Stanje |
|---|---|---|---|---|
| ESP32-C3, C6 | RISC-V RV32IMC | RISC-V | QEMU | provereno |
| ESP32, S2, S3 | Xtensa LX6 / LX7 | Xtensa | QEMU dc233c 34/34 | ploča nije probana |
| RPi Zero, Zero W | ARM1176JZF-S (ARMv6) | ARMv6 | QEMU raspi0 | provereno |
| BeagleBone Black (ARM) | Cortex-A8 (ARMv7-A), Linux | ARMv6 i Thumb-2 | prava ploča: ARMv6 25/25, Thumb-2 53/53 | provereno |
| RPi Zero 2 W | Cortex-A53 | AArch64 | QEMU raspi3 | provereno |
| AM62, AM64: A53 | Cortex-A53 | AArch64 | jezgro da, ploča ne | provereno |
| AM62, AM64: M4F, R5F | Cortex-M4F, Cortex-R5F | Thumb-2 | jezgro da, ploča ne | provereno |
| PRU-ICSS | TI PRU, 200 MHz | PRU | pru-elf-run 34/34; pravi PRU0 34/34, sito 22,9 ms | provereno na BBB |
| Piccolo C2000 | TMS320F28x | C2000 | sim28 35/35 (ASM = C -O2 = x86) | LaunchPad nije proban |
| PIC16F17125 | PIC16 (enhanced mid-range), 32 MHz | PIC | pravi čip 26/26, ciklusi = MPLAB SIM +2 | provereno, PICkit 5 |
| Industrijski Ethernet | EtherCAT, PROFINET, preko PRU | PRU | PRU jezgro radi na BBB | plan |
| PC DOS (XT/AT, 386+) | 8086 / 80386 | DOS 16-bit, DOS 32-bit | dosbox-x | provereno |
| PC 32-bit Linux | i386–i686 | x86-32 | nativno | provereno |
Veličine
Jezgro = ručni asembler VM-a: NEXT, svi opkodi i tabela skokova, bez programa i podataka. Konzola = ceo REPL (jezgro + parser, rečnik, ispis) prevedena -Os. Sve u bajtovima flash-a.
| Porodica | Čipovi | Jezgro (B) | Konzola (B) | Provereno | Komentar |
|---|---|---|---|---|---|
| x86-64 | PC, serveri | 4 035 | 25 792 | Linux, konzola = sudija | 1 987 kod + 2 048 tabela; konzola uz to traži 386 KB RAM |
| x86-32 | stari PC | 1 028 | — | Linux 34/34 | varijanta sa tabelom skokova 1 906 B |
| DOS 16-bit | 8086 | 563 | — | DOS emulator | od toga tabela skokova 64 B |
| AArch64 | RPi 3/4, Zero 2 W | 3 496 | — | QEMU | — |
| ARMv6 | RPi Zero, BBB | 4 552 | — | prava BBB 25/25 | isti VM iz C (gcc -Os) je 2 036 B |
| Thumb-2 | STM32 F1/F4/G4/H7 | 3 214 | 15 721 | prava BBB: jezgro 53/53, konzola 201/201 | konzola za M4: 12 315 parser i rečnik + 2 840 jezgro + 566 domaćin; 1,75× brža od forth.c; RAM 304 KB, za MCU tek treba smanjiti |
| Thumb-1 | STM32 F0, RP2040 | 2 346 | — | QEMU 22/22 | — |
| RISC-V | ESP32-C3/C6, CH32V | 2 104 | — | QEMU 21/21 | RV32IMC; brža varijanta 2 048 B |
| Xtensa | ESP32, S2, S3 | 2 342 | — | QEMU 34/34 | 1 318 kod + 1 024 tabela; windowed ABI 1 295 kod |
| PRU | AM335x, AM64 PRU-ICSS | 1 520 | — | pravi PRU0 34/34 | 380 instrukcija |
| 8051 | klasični 8051 | 4 031 | — | simulator 36/36 | isti VM iz C (sdcc) je 2 662 B |
| WASM | pregledač | 1 392 | — | Node, pregledač | iz C posle wasm-opt; ručni WAT 2 304 B |
| PIC16 | PIC16F18855, F17125 | 924 | — | pravi čip 26/26 | 528 reči od 14 bita; sito 20,7 ms na 32 MHz |
| C2000 | Piccolo F28x | 1 682 | — | simulator 35/35 | 841 reč od 16 bita: 585 kod + 256 tabela |
| Z80, PTX | — | — | — | emulator, GPU | veličina još nije izmerena |