|
|
||||||||||||
AW: D+ und D++
Ich meine, das Carry-Flag wird bei "=" gesetzt und bei "<>" nicht. Ist schon ein paar viele (ca. 20 !) Jahre her das ich mich zuletzt mit dem 6502 befasste, aber ich bin mir ziemlich sicher. Also nix mit >= oder so. Ansonsten stimmt es aber, die Befehle vergleichen den Inhalt zweier Speicherzellen. Es werden bei beiden Programmen die gleichen Zellen verglichen. Das sie das in umgekehrter Reihenfolge tun ist zunächst irrelevant, da es auf das Ergebnis des Vergleichs ankommt der ja nur "wahr" oder "unwahr" sein kann.
Aber: Der D+ verzweigt wenn der Vergleich "wahr" ist (Carryflag gesetzt) und der D++ verzweigt wenn der Vergleich "unwahr" ist (Carryflag NICHT gesetzt) Das steht jedenfalls nicht gegen die These, dass beim D++ andere Routinen angesprochen werden als beim D+. Leider genügt das auch nicht zum Beweis... Gruß, Willi |
|
||||||||||||
AW: D+ und D++
http://www.6502.org/tutorials/compare_beyond.html A surprisingly common sequence in 6502 code is: LDA NUM1 CMP NUM2 BCC LABEL BEQ LABEL (or something similar) which branches to LABEL when NUM1 <= NUM2. (In this case NUM1 and NUM2 are unsigned numbers.) However, consider the following sequence: LDA NUM2 CMP NUM1 BCS LABEL which branches to LABEL when NUM2 >= NUM1, which is the same as NUM1 <= NUM2. Not only that, it's shorter and (in many cases) faster. Scheint meine Erinnerung mich doch nicht getäuscht zu haben ![]() Gruß Mike P.S.: Der ein oder andere hier hat in seiner Jugend sicherlich mal eines meiner Programme mit Unmengen von Data Zeilen aus 'ner 64er oder Happy Computer abgetippt (war 6510 Assembler deshalb ist es mir noch ein wenig vertraut) ![]()
__________________
Das Universum und die Dummheit der Menschen sind grenzenlos. Wobei ich mir beim Universum nicht so sicher bin. (Albert Einstein) Geändert von Mach2000 (11.08.2009 um 16:50 Uhr) |
|
||||||||||||
AW: D+ und D++
Ich habe nochmal Google bemüht ...
http://www.6502.org/tutorials/compare_beyond.html A surprisingly common sequence in 6502 code is: LDA NUM1 CMP NUM2 BCC LABEL BEQ LABEL (or something similar) which branches to LABEL when NUM1 <= NUM2. (In this case NUM1 and NUM2 are unsigned numbers.) However, consider the following sequence: LDA NUM2 CMP NUM1 BCS LABEL which branches to LABEL when NUM2 >= NUM1, which is the same as NUM1 <= NUM2. Not only that, it's shorter and (in many cases) faster. Scheint meine Erinnerung mich doch nicht getäuscht zu haben ![]() Gruß Mike ![]() ![]() Ja, die Befehle bewirken prinzipiell das gleiche ... mit eben den von Dir bereits festgestellten Unterschied von >= zu >. Das heisst, der D+ verzweigt auch dann, wenn beide Speicherinhalte gleich sind. Der D++ tut das nicht. Damit bleibt es aber dabei: Thorsten's These wird dadurch nicht entkräftet (eher erhärtet), aber beweisen kann das leider auch nix... Zitieren:
P.S.: Der ein oder andere hier hat in seiner Jugend sicherlich mal eines meiner Programme mit Unmengen von Data Zeilen aus 'ner 64er oder Happy Computer abgetippt (war 6510 Assembler deshalb ist es mir noch ein wenig vertraut) ![]() ![]() ![]() Gruß, Willi |
|
||||||||||||
AW: D+ und D++
![]() Gruß Mike
__________________
Das Universum und die Dummheit der Menschen sind grenzenlos. Wobei ich mir beim Universum nicht so sicher bin. (Albert Einstein) |
|
||||||||||||
AW: D+ und D++
![]() Du willst Dich nur rausreden noch bevor Du dich als Verfasser diverser Reinfälle outest! ![]() Gruß, Willi <--- der sich eben noch was weinhaltiges besorgen muss, weil er sonst das Spiel gleich nicht erträgt... |
|
||||||||||||
AW: D+ und D++
Trotz 4 Bytes scheint es nur wenig Unterschied zu geben.
Beim D+ sind die drei zusätzlichen Bytes wohl folgender Code: JSR $ADC0 LDA $CD CMP $4D BCS $961F Wenn mein 6502 Assembler Verständnis noch funktioniert, sollte das bedeuten: Wenn Inhalt von $CD >= Inhalt von $4D dann verzweige Beim D++ steht dort: JSR $ADC0 LDA $4D CMP $CD BCC $961F Das sollte fast identisch sein mit dem obigen: Wenn Inhalt von $CD > Inhalt von $4D dann verzweige Einziger Unterschied scheint ">=" zu ">" .... plus das Byte bei Offset 0 Vielleicht überprüft das mal jemand dessen Kenntnisse frischer sind als meine ![]() Gruß Mike P.S.: Das erste Byte (Offset 0) scheint in der Routine ab $D72E verwendet zu werden, keine Ahnung was damit gemacht wird. ![]() Gruß Mike
__________________
Das Universum und die Dummheit der Menschen sind grenzenlos. Wobei ich mir beim Universum nicht so sicher bin. (Albert Einstein) |
Folgender Benutzer sagt Danke zu Mach2000 für den nützlichen Beitrag: | ||
kamoj (08.07.2024) |
|
||||||||||||
AW: D+ und D++
Hallo,
ich habe vor einiger Ziet mal die nachfolgende Partie (von Thorstens Seite http://www.thorstenczub.de/dplus.html) mit meinem Turboking II (D+?) nachgespielt, als Kompensation für die etwas geringere Geschwindigkeit habe ich die Spielstufe 40 Züge in 2 Std. 30 Min. gewählt. [Event "40/2Std."] [Site "?"] [Date "2009.08.21"] [Round "?"] [White "Saitek D++ 8Mhz"] [Black "Gideon 3.0 32Mhz"] [Result "1-0"] [ECO "B15"] [PlyCount "91"] [TimeControl "600"] {4MB, Fritz7.ctg} 1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nf6 5. Nxf6+ exf6 6. c3 Bd6 7. Bd3 O-O 8. Ne2 Qc7 9. Qc2 g6 10. h4 Re8 11. h5 Re7 12. Be3 a5 13. hxg6 fxg6 14. O-O-O Be6 15. Bxg6 Bxa2 16. Bf5 a4 17. Rde1 Bb3 18. Qb1 a3 19. Rh6 axb2+ 20. Kxb2 Ba2 21. Qd3 Bd5 22. c4 Ra3 23. Nc3 Bb4 24. Bd2 Rxe1 25. Bxh7+ Kf8 26. Bxe1 Qb6 27. Rxf6+ Ke8 28. Bg6+ Kd8 29. Kc2 Nd7 30. Nxd5 Qa7 31. Bxb4 Rxd3 32. Be7+ Kc8 33. Kxd3 cxd5 34. Bf5 dxc4+ 35. Ke4 Qa2 36. Bd6 Kd8 37. Rf7 Qe2+ 38. Kd5 Nb6+ 39. Kc5 Na4+ 40. Kb4 Qb2+ 41. Kxa4 Qb3+ 42. Ka5 Qa2+ 43. Kb4 Qd2+ 44. Kb5 Qh6 45. Rf8+ Qxf8 46. Bxf8 1-0 Die Partie ist komplett reproduzierbar mit Ausnahme des 12. Zuges Le3, dieser Zug taucht innerhalb der Suche des TK II überhaupt nicht auf, selbst bei längerer Bedenkzeit nicht. Es spielt auch keine Rolle, ob die Stellung aufgesetzt wird oder aus der Partie heraus entsteht, vielleicht hat ja ein D++ Besitzer mal Lust, diese Schlüsselposition zu überprüfen, sollte nicht viel Zeit in Anspruch nehmen, da bis zum 10. Zug noch aus dem Buch gespielt wird. Grüße Uwe |
|
||||||||||||
AW: D+ und D++
Hallo Uwe,
Gruß, Micha |
|
||||||||||||
AW: D+ und D++
mir ist schon klar das der d++ nur minimal unterschiedlich ist als der d+.
aber dort wo das passiert sind es eben sehr andere züge und man hat den eindruck das der d++ dabei viel selektivere entscheidungen macht. der d+ spielt nicht viel anders. er spielt solider. leider kann ich das nicht mehr so alles nachvollziehen. habe 2 module aber die sind nicht ans laufen zu bekommen. werde sie wohl zu einem fachmann schicken müssen. aber wenn der keine vergleichsmodule findet sehe ich da auch schwarz. wir haben nie behauptet das der D++ eine programmveränderung ist im UMFANG des Codes. wir haben nie über den Code gesprochen. sondern mehr über die Wirkung, die sich uns aus Partien erschloß. Code haben wir ja nie gesehen.
__________________
Die ganze Welt des Computerschachs |
![]() |
|
|