From: Matthias T. <mt...@we...> - 2008-05-01 18:22:47
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Kalus Michael schrieb: > Moin. > > Ich versuche gerade das DO_NEXT des amforth zuverstehen. Suchen in > der mailing list ergab dazu "no result". Gibt es da ein link zu einer > Erklärung? Das ist exakt genauso wie in Ron Minkes Beschreibung in der VD. > > Kommentiert (aber nicht unbedingt verstanden) habe ich das bisher so: > > > DO_NEXT: ; 24 CPU cycles to ijmp > C:001c0e f06e brts DO_INTERRUPT > C:001c0f 01fd movw zl, XL ; READ IP: Z <-- IP ... Der Generierte Code ist schwerer lesbar als der eigentliche Quelltext mit den Makros. > > IP ist ein 16Bit Zähler. > - Warum wird der x2 genommen um von der so ermittelten Addresse im > Flash den Wert für W zu holen? AVR 8Bit Microcontrollerbesonderheit. Der Flash besteht aus 16bit Zellen, die zugehörige lpm (load program memory) liest aber 8bit weise. > - Der Wert in W ist nun ein Zeiger dorthin, wo der ausführbare Code > beginnt, oder? Siehe Ron Minkes Artikel > Irgendwie blicke ich gerade nicht durch. Ist das nicht eine Stufe > zuviel "indirect threading code" ? Da es funktioniert, müsste eigentlich stimmen ;=) Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIGgpx9bEHdGEMFjMRAl2gAKCYKCUCyX7biiygAO0Pm4ptcfs63ACfbDhw tTBiWyHoND/wBwNNx6fQlOk= =Q+Fa -----END PGP SIGNATURE----- |