Wieso eigentlich undefiniert: Wert des Dividenden geteilt duch Null = Wert des Dividenden bleibt ungeteilt erhalten!Dosenware hat geschrieben:x+0=xfreecrac hat geschrieben: Das kann man bei Bedarf ja softwareseitig tun. Es gibt aber keine besondere Notwendigkeit so etwas hardwareseitig abzufangen. Denn sonst könnte vergleichsweise ja auch bei jedem add-Befehl wo eine Null addiert wird zu einem "Add with Zero--Error Exception" führen
x/0=undefiniert
Der Unterschied besteht nur darin, dass ein Ergebniss bei der Divison durch Null nicht in den Zielregistern landet und stattdessen ein sinnloser Exception ausgelöst wird, anstelle das man den ungeteilten Wert einfach in die Zielregister einträgt, denn der Dividend der duch null geteilt wurde bleibt sonst ja einfach nur ungeteilt erhalten und könnte als Ergebniss doch ebenfalls verwendet werden, gäbe es nicht diesen völlig sinnlossen Divide by Zero-Error-Exception.Da ist der Unterschied,
Diese Begründung ist mir zu schwammig. Auch kann ich es mir nicht vorstellen das es schaltungstechnisch so viel aufwendiger sein würde, das Ergebniss einer Divison durch Null einfach in die dafür vorgesehenen Zielregister zu packen und auf eine Exception zu verzichten.warum das /0 Hardwareseitig abgefangen wird hat wohl etwas mit der Entwicklungsgeschichte der Prozessoren zu tun,
Ich sehe auch keinen Sinn darin ein x/0 hardwareseitig abzufangen.aber ein x+0 muss nun wirklich nicht abgefangen werden.
Für Prozessoren einer bestimmten Baureihe kann das Ergebniss im Vergleich zu anderen Prozessoren schon mal unterschiedlich ausfallen.BTW. bei der Schleife macht der K6 übrigensBei 500MHz nicht übel...mal schauen ob da ein Rechenfehler drin istCode: Alles auswählen
1{mov bx}+FFFF{mov cx}+(2*FFFF*FFFF{innere Schleife})+FFFF{dec bx}+FFFF{jnz}/ 8,60s= 8.589.869.056/ 8,60= 998.8 Millionen Befehle/s mit Loop 1{mov bx}+FFFF{mov cx}+(3*FFFF*FFFF{innere Schleife})+FFFF{dec bx}+FFFF{jnz}/17,15s=12.884.705.281/17,15= 751.3 Millionen Befehle/s ohne Loop
Doch bei sehr vielen Prozessoren ist ein Loop in der Regel eher langsamer als eine Kombination aus "dec Register + jnz Adresse".
Man könnte aber auch nachschauen um welche CPU es sich handelt und dann für spezzielle CPUs eine Alternativ-Routine bereitstellen.
Dirk