|                                                                                                        |


<== : [en] : [E4] : [L4] : [Forth] : [mail]   [Glossar], [Referenz]   F4   F.I.G.RU : F.I.G.UK : FORTH e.V. : tutorial

  • Files: Einzeln aus dem F4 Quellen-Archiv:Compilieren der folgenden screen-files erfordert auch f4x:
  •  
    O.g. 'screen-files' enthalten nur Schriftzeichen im Codebereich 32 bis 126, d.h. außer dem Leerzeichen allein die sichtbaren und drucktauglichen Buchstaben, Ziffern, Satz- und Rechenzeichen des minimalen Zeichensatzes, der mit allen iso-Formen, unicode und us-ascii compatibel ist. Sie lassen sich darum in nahezu jedem Rechnersystem problemlos lesen und, da das Anzeigeformat mit 64 Zeichen/Zeile fest vereinbart ist, ebensoleicht auch in beliebig formatierten Text übertragen. Wer nur an den Texten interessiert ist und nicht über einen Editor rsp Betrachter für derart formatfreie Vorlagen verfügt, auch nicht über ein gleichwertiges Programm mit einstellbarer Wiedergabe-Breite, und dergleichen nicht nachträglich installieren mag, convertiert deren Format ggf. in zeilenweise Anordnung. Dazu ist lediglich jeweils nach 64 übertragenen Zeichen (Bytes) der Code für den Zeilenvorschub einzufügen. Ein entsprechendes Programm ist im F4-Archiv enthalten.
F4@BerliOS


F4 FIG-Forth (1.0) version, 'traditioneller', indirekt gefädelter Forth-Typ.
Copyright 2003 Berlin by h-p recktenwald, F4 ist experimentelle Software ohne jede Garantie, die unter Beachtung des für mein gesamtes Material geltenden Ausschlußvermerks in sonst beliebiger Weise benutzt werden mag, sofern diese Notiz und ein Hinweis auf die frei zugängliche Quelle (hier) beigefügt wird.
 
Strenggenommen ist ein IA-32 Linux/ELF fig-Forth-Typ nicht darstellbar: Das fig-Forth spezifiziert u.a. "Zellen" in 16-bit-Größe und 'big endian'-Anordnung im Speicher, und erfordert schreibbaren Programmbereich. Diese Forderungen erscheinen mittlerweile einigermaßen anachronistisch. Die Ersten sind schlicht unpraktisch, da 32bit-Posten die IA-32 Standardgröße darstellen und dort Daten 'little endian' angeordnet werden, die Letzte ist unsicher. Ohne entscheidenden Nutzeffekt (ein 'save-system' würde einfacher) den Vorteil geschützter Programmdaten allein eines Standards wegen aufzugeben, ist m.E. nicht sonderlich sinnvoll. Und schließlich kommen noch die Unzulänglichkeiten zeitgenössischer Assembler hinzu, die den Aufbau standardgetreuer Wortheader ungemein erschweren: Wirklich heikel wird das Ganze einzig für Puristen, die versuchen, die 'Kunst des Programmierens' (als Wort ansich schon hinreichend absurd) um ihrer selbst zu betreiben - von Herzen sei es ihnen gegönnt...
 
Im Folgenden das Wesentliche in Kürze. Zur weitergehenden Information sei auf das Glossar verwiesen, welches zusammen mit einer Kurzreferenz für die einzelnen Worte auch in deutscher Sprache vorliegt. Es ist im Binaerpaket enthalten, rsp. kann aus dem Quellenpaket erzeugt werden.

 


 

"f4a" (jüngste Änderungen). fig-Forth-1.0 Variante,
Ursprünglich vor allem zum Ausprobieren des Gespanns "cpp" mit "gasp" und "as", zur Prüfung von Einzelheiten für die "lib4th", auch, um jene von der lästigen Sonderversion des "nasm" unabhängig zu machen, und zu Versuchen mit einigen Besonderheiten wie etwa bedarfsweise automatisch erweiterter Speicherbereiche, wodurch - zunächst nur beim F4 - explizite Zuweisungen (ANS-Forth "ALLOCATE") aus dem Systemspeicher weitgehend entbehrlich wurden; d.h. Dictionary- oder Stack-Überlauf kommt nicht mehr vor - alles innerhalb der vom Linux gesetzten Grenzen, denen zufolge sich das Dictionary auf max. 1G Bytes erweitern kann, und das Gesamtsystem auf bis zu 3G Bytes.
Abweichungen gegenüber dem standardmäßigen fig-Forth: Ergänzungen, Variationen: Erweiterungen von f4x.scr mit {load} &c nachladbar: Weitgehende Anpassung an das ANS-Forth durch die Definitionen aus "f4ans.scr", mit den Wortsätzen  
Weitere Hinweise finden sich in der ausführlich kommentierten Assemblerquelle und in den Glossaren; Grundlegendes zur fig-Forth-Installation allgemein sowie etliche 'hi-level' Programmierungs-Beispiele im Dokumentationsverzeichnis des F4-Archivs.
 

 

[oben] :


Reelle Zahlen

liegen als Quotienten von un/echten Brüchen aus Paaren von 'doubles' (64-bit) vor, besonders oft u.a. in internen Zwischenrechnungen benötigte Operationen der Genauigkeit halber auch in Paaren aus 128-Bit-Posten. Neben den Grundrechenarten und einigen üblichen Hilfsdefinitionen, z.B. {1/F} für das Reziproke, sind Quadratwurzel, gebrochene Potenzen und Natürlicher Logarithmus sowie die grundlegenden Winkelfunktionen in (möglichst) effizienten berechnenden Algorithmen ausgeführt. Damit können die 'höheren' Rechenoperationen sämtlich relativ leicht zusammengesetzt werden - Algorithmen u.a. zu den im F4 nicht gegebenen Hyperbelfunktionen sind in f4f.scr kurz angerissen rsp. finden sich in ausgearbeiteter Form in der lib4th.
Die Ausführung von Fließkommazahlen in dieser Form zeichnet sich vor allem durch lückenlos kontrollierbare Rechengenauigkeit aus, wie sie etwa für kaufmännische Anwendungen unabdingbar ist. Die Genauigkeit der als Quotient zweier ganzer Zahlen notierten reellen Zahlen ist der Bruch-Schreibweise beliebiger Ziffernsysteme (innerhalb vernünftiger Grenzen) überlegen, da dort ein großer Teil Reeller Zahlen nicht darstellbar ist, in Dezimalschreibweise z.B. Drittel, Siebentel, etc, im IEEE-Format (binaer) auch Zehntel und Hundertstel - wodurch jede in Währungseinheiten zählende Berechnung unzuverlässig wird! Als Ganzzahlen-Quotient steht derartiges dagegen ohne Rest, d.h. mit absoluter Genauigkeit da. Irrationale Zahlen (nicht-periodische unendliche Brüche wie etwa Wurzel 2) werden soweit genau übernommen, wie ihr Wert z.B. dezimal mit jeweils bis zu 19 Ziffern in Zähler und Nenner hingeschrieben werden kann.
Rundungsfehler pflegen sich, da sie ähnlich sowohl im Zähler als auch im Nenner anfallen, eher auszugleichen, statt sich, wie bei anderen Darstellungsformen, stetig anzusammeln.
Viele Operationen werden enorm vereinfacht. Z.B. erhält man ohne Verlust an Rechengenauigkeit das Reziproke durch Vertauschen der Zahlenposten von Zähler und Nenner. Division und Multiplikation verursachen identischen Aufwand, geringer als für Subtraktion oder Addition; die Quadratwurzel ist reine Ganzzahlenoperation je an skaliertem Zähler und Nenner. Rechnen und Ausgabe in anderen Ziffernsystemen ist aufgrund der Darstellung als Quotient Ganzer Zahlen völlig problemlos, d.h. mit den üblichen Forth-Worten handhabbar und ohne jeden zusätzlichen Aufwand nur vom Wert der {base} abhängig.
U.a. die kleine nachrichtentechnische Formelsammlung f4o.scr zur (zunächst nur) Berechnung von Detektorempfängern basiert auf den in f4f ausgeführten 'Reellen Zahlen'. Die der Umwandlung geschriebener Zahlen in ganzzahlige Brüche zugrundeliegende Kettenbruchzerlegung hilft für sich allein schon bei der Bildung ganzzahliger Verhältniszahlen, wie sie etwa zur Darstellung von Räderübersetzungen (Kettenräder, Zahnräder, Getriebe, Riemenantrieb &c - s.u.) benötigt werden; erste Ergebnisse liegen bereits unmittelbar nach Hinschreiben vor! Die Darstellung von Vergeichsergebnissen wird besonders leicht: Man schreibt das Verhältnis { a : b } genau so hin und erhält mit {f.} direkt das Ergebnis:


[oben] :

 

© H.-Peter Recktenwald, Berlin, 26.Aug.2002 = .hpr.l0 = : 48-1404