---
description: A colorForth magenta változója a forráskódbeli cellájának címét adja vissza. A bíborváltozó értékének futtatás közbeni megváltozása automatikusan átírja a forráskódban a változóhoz rendelt értéket.
forrás: http://www.inventio.co.uk/EuroForth03.htm
szerző: zgroska@gmail.com
verzió0v1: 2020.11.30
verzió0v2: 2023.04.01
állapot: a szerkesztése folyamatban
tags: colorForth, leírás, hu
---
# A <font color="red">color</font><font color="green">Forth</font> <span style="color: rgb(230, 117, 184);">Magenta</span> színű változója
2003\. szeptember 05 - Howerd Oakford [www.inventio.co.uk](http://www.inventio.co.uk/)
# Összefoglaló
A <font color="red">color</font><font color="green">Forth</font> <font color="magenta">magenta</font> változója a forráskódbeli cellájának címét adja vissza. A <font color="magenta">magenta</font> értékének futtatás közbeni megváltozása automatikusan átírja a forráskódban a változóhoz rendelt értéket, megnyitva az utat a program és az adatok szorosabb integrálása érdekében.
# Egyszerűség
Chuck Moore legújabb Forth fejlesztése, a <font color="red">color</font><font color="green">Forth</font>, egyszerűbb, mint a többi **Forth**, mert olyan kialakítást használ, amely a korábban nélkülözhetetlennek gondolt számos funkciót kiküszöböl:
* A szövegbeviteli puffert, az ACCEPT (vagy az EXPECT) és a QUIT szót használták a terminálon beírt karakterek összegyűjtésére és értelmezésére.
* A csatolt listás szótár lehetővé tette a változó hosszúságú név, kód és paraméter mezők egyetlen tömbbe - a szótárba - való összeállítását.
* Az olyan szavak, mint az .S és a DUMP, lehetővé tették a verem és a memória megjelenítését.
Meglepőnek tartom, hogy Chuck képes volt egyszerűsíteni vagy eltávolítani ezeket a szabványos Forth-struktúrákat, és mégis olyan környezetet biztosít, amely felhasználható komplex alkalmazások fejlesztésére:
* A verem tartalma a szerkesztő képernyő alján jelenik meg. A legfelső veremelem Huffman dekódolt karakterláncként is megjelenik. Egy Forth szó nevének „beírása” felhalmozza a ~~Huffman~~ Shannon-Fano kódolt bitmintát a legfelső veremelemben. Az egyes gombok lenyomásakor a verem teteje megváltozik, és megjelenik a karaktersorozata.
* Mivel a szó neve és a „tokenizált kódmező” (szín) is be van csomagolva a tokenjébe, a szótár két lineáris tömbre, a tokenekre és a paramétermezők címeire redukálható. A szótár keresés és ennélfogva az összeállítás rendkívül gyors.
* Az előre értelmezett forrást 1K oktett blokkokban tároljuk. Ezeket a RAM-ban tárolják. Bekapcsoláskor a lemezről betöltik a RAM-ba, és `save` „mentés” funkcióval másolják ki a lemezre vagy más külső tárolóra.
* `.S` nem szükséges, mivel a verem megjelenik a szerkesztőben.
* A szövegbeviteli puffert (mondjuk egy 80 karakteres sort) egy kétdimenziós szerkesztő képernyő váltotta fel. Ez egy hagyományos blokk alapú Forth szerkesztőnek tűnhet, de valójában nagyon más.
# Régi és új
Érdekes megjegyezni, hogy a hagyományos Forth konstrukcióknak nincs egyszerű <font color="red">color</font><font color="green">Forth</font> megfeleltetése.
Például a QUIT funkcionalitását felváltotta a legfelső veremelem Huffman kódolása, a kijelző folyamatos háttérfeladat-frissítése és egy összetettebb szerkesztő kombinációja.
Hasonlóképpen a <font color="red">color</font><font color="green">Forth</font> <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">bíborváltozó</span> nem írható le egyetlen hagyományos Forth konstrukcióval. A legközelebbi analógia VÁLTOZÓ, és bármelyik változótípus végrehajtása valóban az adatok címét hagyja a veremben. A különbség abban rejlik, hogy hol tárolják az adatokat. A hagyományos változó egy címet ad vissza, amely a lefordított kód paramétermezőjére mutat. A <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">bíborváltozó</span> a forráskód következő 32 bites cellájának címét adja vissza.
# Ügyes trükk
Fontolja meg a változó két típusának inicializálását:
```
VÁLTOZÓ x 123 x! \ hagyományos
```
A forráskódban megadott értéket a változó paramétermezőjében tároljuk.
[ <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">bíborvörös</span> ] <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">x</span> <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(61, 202, 67);">0</span> \ <font color="red">color</font><font color="green">Forth</font>
A <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">bíborváltozó</span> definiálásakor az alapértelmezett értéke 0 lesz. Ha új értéket tárolunk benne, a forrás megváltozik.
[ <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(250, 201, 47);">sárga</span> ] <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(250, 201, 47);">123 x!</span> \ <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(250, 201, 47);">sárga</span> „értelmezett” parancsok
[ <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">bíborvörös</span> ] <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">x</span> <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(61, 202, 67);">123</span> \ <font color="red">color</font><font color="green">Forth</font>
Mivel az érték magában a forráskódban van tárolva, <span style="outline: none; font-weight: 600; -webkit-print-color-adjust: exact !important;">_egy új érték tárolása megváltoztatja a forrást._</span>
# Átmeneti összeállítás és forrásmegosztás
A fordítás az ember által olvasható forráskódot gépi futtatható utasításokká alakítja. Mivel az emberek és a számítógépek nagyon különbözőek, ez nem triviális művelet. Mivel a <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">bíborváltozó</span> adatait a forrás tárolja, <span style="outline: none; font-weight: 600; -webkit-print-color-adjust: exact !important;">_a lefordított kód eldobható az információk elvesztése nélkül_</span>.
Ennek három hatása van:
- „Pont időben” vagy átmeneti összeállítás lehetősége. Például az „észak” meghatározása „46 betöltés”, amely kódot tölt be az „Északi híd” PCI regisztereinek megjelenítéséhez - a hibakeresési állapot megmarad, még „üres” után is.
- A forráskód elosztható a változók aktuális értékeivel. Például a cfdos.blk jelenlegi terjesztése tartalmaz egy programot a Mandelbrot halmaz megjelenítésére a 64\. és 66\. blokkban, az x, y, skála és egy adott minta előállításához szükséges iterációkkal együtt.
- A programok távolról futtathatók, csak forráskód átvitelével. Az aktuális állapotinformációkat a forrás tartalmazza.
# Összegzés
A <font color="red">color</font><font color="green">Forth</font> környezet lehetővé teszi egy új konstrukciót, a <span class="font-color" style="outline: none; -webkit-print-color-adjust: exact !important; color: rgb(230, 117, 184);">bíborváltozót</span> , amelynek adatait a forráskód tárolja. Ez lehetővé teszi az alkalmazások összeállítását és elvetését állapotinformációik elvesztése nélkül, ami viszont más, egyszerűbb stílusú programozást tesz lehetővé.