Division durch 0 bei Intel X86

19/11/2008 - 19:43 von Ernst Baumann | Report spam
Hallo allerseits,
wenn man (mit einem entsprechenden Assemblerbefehl) durch 0 dividiert,
wird eine Hardware-Exception aufgerufen, d.h. der Prozessor löst einen
Hardware-Interrupt aus.

In der guten alten Zeit konnte man die Interrupt-Serviceroutine im
Debugger noch nachvollziehen.

Frage:
Wie macht man dies mit
MS VC++ Vers. 6.0 ?
In einem C++-Program kan man ganz einfach Assemblercode einbinden (mit
__asm) und übersetzen.
Dort gibt es zwar auch einen Debugger, Diassembler; man kann Register
und den Speicher anschauen und vieles mehr.
Aber:
Wie kann ich dort die Interrupt-Serviceroutine debuggen?
Das interessiert mich sehr.

mfg
Ernst
 

Lesen sie die antworten

#1 Heiko Nocon
19/11/2008 - 20:15 | Warnen spam
Ernst Baumann wrote:

wenn man (mit einem entsprechenden Assemblerbefehl) durch 0 dividiert,
wird eine Hardware-Exception aufgerufen, d.h. der Prozessor löst einen
Hardware-Interrupt aus.



Nein. Das trifft nur zu, wenn du mit der FPU dividierst, nicht jedoch
bei Ganzzahldivision in der CPU.

In der guten alten Zeit konnte man die Interrupt-Serviceroutine im
Debugger noch nachvollziehen.



Kann man auch heute noch. Da aber CPU-Exceptions in Ring0 behandelt
werden, brauchst du dazu einen sog. Kernelmode-Debugger.

Wie macht man dies mit
MS VC++ Vers. 6.0 ?



Garnicht. Das ist halt eben kein Kernelmode-Debugger.

Ähnliche fragen