Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.forth > #555

Re: Anwendungen / 10 MHz Uhr

From Ewald Pfau <anderswo@gmx.net>
Newsgroups de.comp.lang.forth, de.sci.electronics
Subject Re: Anwendungen / 10 MHz Uhr
Date 2019-08-30 08:47 +0000
Message-ID <gss653FthmU1@mid.individual.net> (permalink)
References <qk3s0f$gpa$1@dont-email.me> <qk95k9$mr9$1@news2.open-news-network.org> <qk9aju$j4u$1@dont-email.me> <qkaja4$rku$1@news2.open-news-network.org>

Cross-posted to 2 groups.

Show all headers | View raw


In de.sci.electronics, Johannes Bauer <dfnsonfsduifb@gmx.de> wrote:

> Aber habe ich das schon richtig verstanden, dass jeweils
> Forth-Unterroutinen keinerlei feste Calling Convention haben, d.h. sich
> das jeweils von Funktion zu Funktion unterscheiden kann? D.h. also auch
> nicht statisch geprüft werden kann, ob die Funktion jeweils den Stack in
> einem ordentlichen Zustand hinterlässt? Ist das in der Praxis kein Problem?

Der Stack selbst ist die Konvention, Variablenplätze sind bei
Lowlevel-Sachen eher sehr spezielle Kontext-Abhängigkeiten, bei normalen
Forth-Worten (die Du Unterroutinen nennst - in der Art der Fädelung ist
aber eigentlich alles irgendwie unten, also sub...).

Man sollte dazusagen, dass bei ASM-Gebrauch (im Forth-Slang: Forth-Worte als
Prinitives anstelle Secondaries) die Register-Architektur berücksichtigt
werden muss, ein gewisses Sortiment von Registern geht für die
Forth-Maschine selbst drauf, wg. 2 Stacks und fixem Instruction-Pointer plus
Umladeregister, dann gern auch Top-Of-Stack im Register.

Nur bei ISRs können die Register als frei angenommen werden, wenn beim
Ansprung die ganze Registerbank freigeschaufelt und später restauriert wird.

Nett ist nb. die Konstruktion von gemeinsamen Methoden für Sammelobjekte
auch in Asm,

: def-wort CREATE dies und das
;CODE methode in asm
endcode

statt des secondary-Aufbaus

: def-wort CREATE dies und das
;DOES methode in forth-worten ;

(mit diesem universellen Konstrukt braucht es auch keine Arrays, die sind
mit einem Fingerschnippen billig zu haben, wie immer man sie braucht.)

Bei Aufruf des dann mit CREATE erstellten Wortes liegt für die Methode die
Startaddesse des zum Zeitpunkt der Erstellung mit CREATE gültigen
Speicherplatzes an Top of Stack (nennt sich sinnigerweise HERE ), kann im
Definitionswort oder im Zuge der Definition ad hoc mit ALLOT reserviert
werden, oder mit <wert> ',' (Komma), was immer das Objekt so braucht, damit
wandert das HERE weiter.

Back to de.comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Anwendungen / 10 MHz Uhr Rafael Deliano <rafael_deliano@arcor.de> - 2019-08-27 20:15 +0200
  Re: Anwendungen / 10 MHz Uhr Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-08-29 20:30 +0200
    Re: Anwendungen / 10 MHz Uhr Rafael Deliano <rafael_deliano@arcor.de> - 2019-08-29 21:55 +0200
      Re: Anwendungen / 10 MHz Uhr "Wolfgang Allinger" <all2001@spambog.com> - 2019-08-29 19:16 -0400
        Re: Anwendungen / 10 MHz Uhr Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-08-30 13:41 +0200
          Re: Anwendungen / 10 MHz Uhr Rupert Haselbeck <mein-rest-muell@gmx.de> - 2019-08-31 00:50 +0200
        Re: Anwendungen / 10 MHz Uhr Rafael Deliano <rafael_deliano@arcor.de> - 2019-08-30 19:02 +0200
      Re: Anwendungen / 10 MHz Uhr Johannes Bauer <dfnsonfsduifb@gmx.de> - 2019-08-30 09:30 +0200
        Re: Anwendungen / 10 MHz Uhr Ewald Pfau <anderswo@gmx.net> - 2019-08-30 08:47 +0000
        Re: Anwendungen / 10 MHz Uhr Rafael Deliano <rafael_deliano@arcor.de> - 2019-08-30 18:36 +0200
  Re: Anwendungen / 10 MHz Uhr Ralph Aichinger <ra@pi.h5.or.at> - 2019-08-30 11:02 +0200

csiph-web