Ekran iznad crta Forth u WASM jezgru, pravo na GPU.Opis i isti podaci kao tekst ↓

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).

provereno testovi ponovljeni nezavisno čeka proveru prošlo jednom, nije ponovljeno otvoreno pada ili stoji plan još nije rađeno

Porodice

Jedno ručno jezgro po porodici procesora, isti Forth iznad; sudija je forth.c

PorodicaČipovi i mašineĆelijaDomaćinJezgroTestovi
Thumb-2Cortex-M3/M4/M7, R5F (STM32 F1/F4/G4/H7, AM62/AM64 M4F i R5F)32Zephyr, goli čip; isto jezgro i pod Linux-om (BBB)radi, i na pravoj BBB53/53
Thumb-1Cortex-M0, M0+ (STM32 F0, nRF51, RP2040)32Zephyr, goli čippopravljen, čeka proveru22/22
x86-64server, radna mašina (Ryzen)32 i 64nginx, konzola forthradi38/38
x86-32i386 i noviji, Linux (int 0x80), bez libc32Linux (goli sistemski pozivi)radi34/34
DOS 16-bit8086/8088 i noviji, realni režim, .COM (jezgro 563 B)16MS-DOS, FreeDOS, dosbox-xradi29/29
DOS 32-bit386+, zaštićeni režim bez ekstendera, sopstveni GDT (.EXE 94 KB)32DOS bez EMM386, dosbox-xradi34/34
WASMpregledač32 → 64pregledačradi19/19
SPIR-VGPU preko Vulkana: Vega 8, NVIDIA, Intel, llvmpipe32GPU, hiperparalelnoradi19/19
PTXGPU NVIDIA (RTX 5060 Ti na k3)32 + f32GPU, hiperparalelnoprovereno19/19
AArch64Cortex-A53/A72: RPi Zero 2 W, RPi 3/4, AM62/AM64 A53, ARM serveri64goli čip, Linuxprovereno—
ARMv6ARM1176: RPi Zero, Zero W; isti kod na Cortex-A8 (BeagleBone Black)32goli čip, Linuxprovereno, prava ploča BBB25/25
RISC-VRV32IMC: ESP32-C3/C6, CH32V, GD32VF32Zephyr, goli čipprovereno—
XtensaESP32, ESP32-S2/S3 (LX6, LX7)32QEMU dc233c; ESP32/S2/S3 se gradiprovereno u QEMU, ploča ne34/34
C2000TI Piccolo TMS320F2803x/F2806x (bajt je 16 bita)16 ili 32goli čip; TI cl2000 + sopstveni simulator, pravo TI kodiranjeprovereno u simulatoru, ploča ne35/35
PRUTI PRU-ICSS na AM335x/AM64 (bez prekida i keša)32goli čip, remoteproc; pravi PRU0 na BeagleBone Blackprovereno, pravi PRU034/34
Z80Z80 i srodni16goli čipprovereno—
80518051, 805216goli čipprovereno—
PICPIC16 (F18855, F17125)16goli čip; pravi PIC16F17125 kroz PICkit 5provereno, pravi čip26/26

Nove mete

Mete koje je Miki tražio 28.9.; QEMU = može se dokazati na bez ploče

MetaProcesorPorodica jezgraDokaz bez pločeStanje
ESP32-C3, C6RISC-V RV32IMCRISC-VQEMUprovereno
ESP32, S2, S3Xtensa LX6 / LX7XtensaQEMU dc233c 34/34ploča nije probana
RPi Zero, Zero WARM1176JZF-S (ARMv6)ARMv6QEMU raspi0provereno
BeagleBone Black (ARM)Cortex-A8 (ARMv7-A), LinuxARMv6 i Thumb-2prava ploča: ARMv6 25/25, Thumb-2 53/53provereno
RPi Zero 2 WCortex-A53AArch64QEMU raspi3provereno
AM62, AM64: A53Cortex-A53AArch64jezgro da, ploča neprovereno
AM62, AM64: M4F, R5FCortex-M4F, Cortex-R5FThumb-2jezgro da, ploča neprovereno
PRU-ICSSTI PRU, 200 MHzPRUpru-elf-run 34/34; pravi PRU0 34/34, sito 22,9 msprovereno na BBB
Piccolo C2000TMS320F28xC2000sim28 35/35 (ASM = C -O2 = x86)LaunchPad nije proban
PIC16F17125PIC16 (enhanced mid-range), 32 MHzPICpravi čip 26/26, ciklusi = MPLAB SIM +2provereno, PICkit 5
Industrijski EthernetEtherCAT, PROFINET, preko PRUPRUPRU jezgro radi na BBBplan
PC DOS (XT/AT, 386+)8086 / 80386DOS 16-bit, DOS 32-bitdosbox-xprovereno
PC 32-bit Linuxi386–i686x86-32nativnoprovereno

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ČipoviJezgro (B)Konzola (B)ProverenoKomentar
x86-64PC, serveri4 03525 792Linux, konzola = sudija1 987 kod + 2 048 tabela; konzola uz to traži 386 KB RAM
x86-32stari PC1 028—Linux 34/34varijanta sa tabelom skokova 1 906 B
DOS 16-bit8086563—DOS emulatorod toga tabela skokova 64 B
AArch64RPi 3/4, Zero 2 W3 496—QEMU—
ARMv6RPi Zero, BBB4 552—prava BBB 25/25isti VM iz C (gcc -Os) je 2 036 B
Thumb-2STM32 F1/F4/G4/H73 21415 721prava BBB: jezgro 53/53, konzola 201/201konzola 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-1STM32 F0, RP20402 346—QEMU 22/22—
RISC-VESP32-C3/C6, CH32V2 104—QEMU 21/21RV32IMC; brža varijanta 2 048 B
XtensaESP32, S2, S32 342—QEMU 34/341 318 kod + 1 024 tabela; windowed ABI 1 295 kod
PRUAM335x, AM64 PRU-ICSS1 520—pravi PRU0 34/34380 instrukcija
8051klasični 80514 031—simulator 36/36isti VM iz C (sdcc) je 2 662 B
WASMpregledač1 392—Node, pregledačiz C posle wasm-opt; ručni WAT 2 304 B
PIC16PIC16F18855, F17125924—pravi čip 26/26528 reči od 14 bita; sito 20,7 ms na 32 MHz
C2000Piccolo F28x1 682—simulator 35/35841 reč od 16 bita: 585 kod + 256 tabela
Z80, PTX———emulator, GPUveličina još nije izmerena