[Allegro] 'ik,x' und '#ik,x A' [war: Absturz von A99]

Bernhard Eversberg ev at biblio.tu-bs.de
Mi Apr 6 10:32:19 CEST 2011


Am 06.04.2011 08:38, schrieb Thomas Berger:
>> Im Quelltext wird für die i- und v/V-Aktionen jeweils eine Variable
>> curr_kat (current kategory) hergenommen, das ist die Adresse des
>> Feldes, und d.h. seines noch unmanipulierten Inhalts, das in der betr.
>> Zeile am Anfang genannt ist. (Mit #ch ist das anders, dahinter steckt
> Das heisst also, dass es Raum fuer Arbeitsspeicherverschiebungen
> durch M-Befehle (falls echte Kategorie) oder sogar durch dxx- oder lxy-
> Operationen gibt (falls Anwendervariable): Und wenn #cc in einem
> Unterprogramm genutzt wird, ist die Gefahr sehr real, dass curr_kat
> auf eine ganz andere Speicherstelle zeigt als den aktuellen
> Aufenthaltsort der Kategorie im Arbeitsspeicher? Das erklaert einige
> Phaenomene.
>
In der Tat. Wenn man was mit M macht, empfiehlt sich also, die
in der Folge dann zu prüfende Kategorie #cc lieber vorher in eine
#u-Variable zu kopieren. Den Aufwand, den es zur Folge hätte,
jedes einzelne Feld in dem Moment, wo es angepackt wird, erst
mal sofort in eine eigene Variable zu kopieren, die dann unanfällig
wäre für Verschiebungen, wollten wir verständlicherweise nicht
treiben, weil er in sicher mehr als 99% der Fälle nutzlos wäre.
Das ist ärgerlich, zugegeben, aber immerhin haben wir das jetzt
mal aufgespießt.

B.E.




Mehr Informationen über die Mailingliste Allegro