[ascoders] flasm

Ich habe gestern nacht meinen ersten Exkurs in die Assemblerwelt gemacht.
Die Resourcen sind sehr spärlich, konnte aber hier und da schon innerhalb
von Schleifen 2 Zeilen zusammenschrumpfen und gleich ein paar
Performancepunkte gewinnen.

Es bleiben ein paar Fragen, die auf der Seite
http://www.nowrap.de/flasm.html unbeantwortet blieben. Das schwierigste an
dem Assemblercode ist das Auslesen, welcher 'Wert" gerade oben im Stack
liegt. Genau das interessiert mich. Wer baut den Stack wie um ?

Beispiel: Innerhalb einer Funktion(2) stehen folgenden Zeile zu Begin:

push r: this, 'map'
getMember

Scheint mir einfach. Das Register r:this wird in den Stack gepusht. Die
Eigenschaft 'map' wird oben draufgesetzt und dann der Wert (bzw.
MovieClipInstanz) ausgelesen. Was genau liegt jetzt noch im Stack ? Nur ein
Wert oder ? ( 'map' ).

function2  (r:2='y') (r:1='this')
Wozu speichert Flash 'this' als Register r:1, um dann nicht mehr damit zu
arbeiten ? Witzigerweise wird die Performance messbar schlechter, wenn ich
r:this gegen r:1 austausche.


Jetzt noch etwas dicker.
normaler AS Code:

holder._rotation = deg;
holder._xscale = holder._yscale = scl;

Riecht nach Flasm Arbeit :o)
der erste Output:

push r:this, 'holder'
getMember
push '_rotation', r:deg
setMember
push r:this, 'holder'
getMember
push '_xscale', r:this, 'holder'
getMember
push '_yscale', r:this, 'scl'
getMember
setRegister r:0
setMember
push r:0
setMember

Das geht mit Sicherheit besser, oder ? zB. zuviele 'getMember' für 'holder'.

push r:1, 'holder'
getMember
setRegister r: 5 // frei ausgesucht
push '_rotation', r:deg
setMember
push r:5
push '_xscale', r:this, 'scl'
setMember
push '_yscale', r:this, 'scl'
setMember

2 FPS mehr :o)
Aber da unten geht doch mehr, oder ?

Wie schaffe ich es, 'holder' dauerhaft im Stack zu halten ? Das ist
eigentlich die wichtigste Frage, denke ich, um flasm code richtig winzig zu
bekommen.


--
aM

------------------------------------------------------
Archiv   : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: