Ohhhgottt, was hab ich losgetreten. Ich benötige keine Anleitung für "Montetumas Revenge"

Hello, Guest the thread was viewed999 times and contains 26 replies
last post from MrSterlingBS at the
Testtool für Assembler-Programme gesucht
-
-
gabs nicht in der 64er Spezial einen Assembler mit Einzelschritt simulator?
Stefan
(Uiuiui... kann auch Input64 gewesen sein....)
-
Ja, den gab es. Ich finde ihn jetzt auf Anhieb auch nicht, aber das Thema hatten wir vor etwa einem Jahr. Aber das Ding ist nicht wirklich ein Ersatz für einen richtigen Debugger mit Register- und Memoryanzeige, wie mit C64Studio und Vice oder ähnlichem.
-
Was passiert beim ROL oder ROR, ASL oder LSR und welche Flags werden u. U. gesetzt?
Findest Du alles hier:
mcs6500_family_hardware_manual.pdf
Aber ich muss mir, beispielsweise für eine 16bit-Multiplikation, einiges wieder erarbeiten.
Wenn's schnell sein soll und beide Faktoren unbekannt sind, wird das üblicherweise mit Differenzen von Quadratzahlen, letztere aus Tabellen, ausgerechnet. Bitshiften und Zusammenaddieren ist langsamer.
Ohhhgottt, was hab ich losgetreten. [...]
Von deiner Seite kommt halt relativ wenig rüber mit welcher konkreten Aufgabenstellung Du gerade wieder einsteigst. Da mußt Du dich nicht wundern, wenn dir da die ganze Bandbreite an Werkzeugen präsentiert wird. Die Leutz sind sich auch nicht zu schade, eigene Werkzeuge zu bauen, wenn Ihnen das, was "auf dem Markt" ist im Moment für den eigenen Anspruch nicht taugt.
Solche flapsigen Bemerkungen helfen dir dann aber auch nicht weiter und kommen bei dem einen oder anderen auch gerne schon mal in den falschen Hals.
Pro-Tip: such dir eins von den vorgestellten Tools aus, schau ob dir das was bringt, und dann kannst Du gerne in ein paar Wochen mit einem neuen, selbstgeschriebenen Programm daherkommen, das zeigt, daß Du was gelernt hast. Merci.
-
Aber ich muss mir, beispielsweise für eine 16bit-Multiplikation, einiges wieder erarbeiten.
Wenn's schnell sein soll und beide Faktoren unbekannt sind, wird das üblicherweise mit Differenzen von Quadratzahlen, letztere aus Tabellen, ausgerechnet.
Hallo Mike,
hast Du nen Beispiel oder Link zu der Variante parat?
Grüße
Jörg
-
hast Du nen Beispiel oder Link zu der Variante parat?
Von hier:
Writing a 3D geometry engine from scratch - Denial
(... leider momentan hinter einer Anmeldung, da unlängst eine Bot-Armee einen massiven Angriff auf das Denial-Forum gefahren hat ...)
Code- .Multiply
- SEC
- LDA zp_factor_1
- SBC zp_factor_2
- BCS Multiply_00
- EOR #$FF
- ADC #$01
- .Multiply_00
- TAY
- CLC
- LDA zp_factor_1
- ADC zp_factor_2
- TAX
- BCC Multiply_01
- LDA abs_table_lo+$0100,X
- SBC abs_table_lo,Y
- STA zp_result_lo
- LDA abs_table_hi+$0100,X
- SBC abs_table_hi,Y
- BCS Multiply_02
- .Multiply_01
- SEC
- LDA abs_table_lo,X
- SBC abs_table_lo,Y
- STA zp_result_lo
- LDA abs_table_hi,X
- SBC abs_table_hi,Y
- .Multiply_02
- BIT zp_factor_1
- BPL Multiply_03
- SBC zp_factor_2
- .Multiply_03
- BIT zp_factor_2
- BPL Multiply_04
- SEC
- SBC zp_factor_1
- .Multiply_04
- STA zp_result_hi
- RTS
Die beiden je 512 Bytes großen Tabellen 'abs_table_lo' und 'abs_table_hi' werden wie folgt initialisiert:
Das ist bereits für vorzeichenbehaftete Zahlen. Wenn man den Teil von "BIT zp_factor_1" bis ".Multiply_04" wegläßt, gilt die Routine für vorzeichenlose Zahlen.
Die Routine entnimmt die beiden (8-Bit-)Faktoren aus zwei Zeropage-Adressen und speichert das (16-Bit-)Ergebnis ebenfalls in zwei Zeropage-Adressen. Viele Beispiele im Netz erwarten die Eingabe in den CPU-Registern und geben das Ergebnis ebenfalls in CPU-Registern zurück. Der Kern der Multiplikationsroutine läßt sich durchaus auch auf diese Weise implementieren, wobei die Eingabewerte in den meisten praktischen Fällen nicht bereits zur Hand sind, sondern ohnehin erst noch aus dem Speicher abgerufen werden müssen. Es ist ebenso unwahrscheinlich, daß das Ergebnis direkt von einer anderen Multiplikation verarbeitet wird, sodaß es auch erstmal wieder im Speicher abgelegt werden muß. Die Ein-/Ausgabeverarbeitung dieser anderen Routinen erhöht deren Zyklenanzahl um weitere 12 Zyklen (2x LD% ZP, 2x ST% ZP, % ^= beliebiges CPU-Register)! Für die obige Routine benötigt der vorzeichenlose Teil 50 oder 53 Zyklen; je nach Vorzeichen benötigt die gesamte Routine ohne RTS zwischen 62 und 71 Zyklen, durchschnittlich 66,5 Zyklen.
-
Hi,
wenn ich die Nachrichten richtig verfolgt habe wurde noch nicht der online Assembler von Nick Morgan genannt. Fürs wieder reinkommen finde ich den sehr gut.