1
Lowlevel-Coding / Re:"rep outsw" zu schnell?
« am: 05. September 2011, 17:18 »
Also ich habe das ganze unter Ubuntu mit Qemu getestet (Bochs funktioniert irgendwie nicht und bei virtualBox hats Probleme gegeben, weil hda keine .img Datei sein kann und wenn ich das konvertiert habe, er einen Fehler rausgeschmissen hat). Werd jetzt aber mal unter Windows VirtualBox installieren und mit dem Development-Image von meinem Laptop das gleiche auf meinem PC testen, dann seh ich ja, obs die Hardware ist....
Naja, ganz sicher bin ich nicht, dass es genau "rep outsw" ist. Habe immer printf Anweisungen eingefügt und geschaut, wieweit ich komme und aus der Funktion komme ich nicht mehr zurück. Und da mein Assembler eher mager ist und ich nicht weiß, wie ich das weiter Debuggen soll (kann ja auch kein gdb benutzen...) würd ich auf rep outsw tippen.
Rep wird ja ECX mal wiederholt.... Wenn ich die erste Anweisung mit einem "mov ecx, 5" ersetze, dann hängt er sich nicht auf. Nur wenn in ECX was größeres steht, z.b. 20. Wenn ich z.B.: 7 hineinschreibe, dann hängt er sich beim ersten Funktionsaufruf von der Routine nicht auf. Allerdings später beim 5ten oder 6ten mal (wo immer noch ecx mit 7 befüllt wird).
Wie gesagt, sehr, sehr komisch.
Es könnte auch sein, dass wenn ecx zu groß ist, der Speicherbereich, der geschrieben wird, in den Stack hineinragt und die return Adress überschreibt, das halte ich aber eher für sehr unwahrscheinlich..... Vorallem auch, weil bei einer ähnlichen Funktion mit rep insw das gleiche Problem auftritt und da nichts überschrieben wird....
Jemand eine Idee, wie ich das zumindest debuggen könnte? ODer was ich als nächstes machen könnte?
Kann es sein, dass es damit zu tun hat, dass alles mit CHS Modus auf die HD geschrieben wird? (also gibt es HD's, bei denen CHS nicht mehr funktioniert?) Hab mein Problem bei uns im Universitätsforum gepostet und ein paar Leute es austesten lassen, bei vielen mit besseren Prozessoren funktioniert es trotzdem.
Deshalb glaub ich nicht so an das Argument "rep outsw" ist zu schnell.....
Mir fällt aber nichts mehr ein, wie ich das weiter untersuchen könnte oder was die nächsten Schritte wären.
Naja, ganz sicher bin ich nicht, dass es genau "rep outsw" ist. Habe immer printf Anweisungen eingefügt und geschaut, wieweit ich komme und aus der Funktion komme ich nicht mehr zurück. Und da mein Assembler eher mager ist und ich nicht weiß, wie ich das weiter Debuggen soll (kann ja auch kein gdb benutzen...) würd ich auf rep outsw tippen.
Rep wird ja ECX mal wiederholt.... Wenn ich die erste Anweisung mit einem "mov ecx, 5" ersetze, dann hängt er sich nicht auf. Nur wenn in ECX was größeres steht, z.b. 20. Wenn ich z.B.: 7 hineinschreibe, dann hängt er sich beim ersten Funktionsaufruf von der Routine nicht auf. Allerdings später beim 5ten oder 6ten mal (wo immer noch ecx mit 7 befüllt wird).
Wie gesagt, sehr, sehr komisch.
Es könnte auch sein, dass wenn ecx zu groß ist, der Speicherbereich, der geschrieben wird, in den Stack hineinragt und die return Adress überschreibt, das halte ich aber eher für sehr unwahrscheinlich..... Vorallem auch, weil bei einer ähnlichen Funktion mit rep insw das gleiche Problem auftritt und da nichts überschrieben wird....
Jemand eine Idee, wie ich das zumindest debuggen könnte? ODer was ich als nächstes machen könnte?
Kann es sein, dass es damit zu tun hat, dass alles mit CHS Modus auf die HD geschrieben wird? (also gibt es HD's, bei denen CHS nicht mehr funktioniert?) Hab mein Problem bei uns im Universitätsforum gepostet und ein paar Leute es austesten lassen, bei vielen mit besseren Prozessoren funktioniert es trotzdem.
Deshalb glaub ich nicht so an das Argument "rep outsw" ist zu schnell.....
Mir fällt aber nichts mehr ein, wie ich das weiter untersuchen könnte oder was die nächsten Schritte wären.