Gentoo Archives: gentoo-user-de

From: Hans-Werner Hilse <hilse@×××.de>
To: gentoo-user-de@l.g.o
Subject: Re: [gentoo-user-de] crash bestätigung
Date: Sun, 14 May 2006 15:24:50
Message-Id: 20060514172416.a5514430.hilse@web.de
In Reply to: [gentoo-user-de] crash bestätigung by twist@evilhome.de
1 Moin,
2
3 On Sun, 14 May 2006 11:29:35 +0200 (CEST)
4 twist@××××××××.de wrote:
5
6 > ich bin im moment am diplomarbeit basteln und bin dabei über folgende
7 > prozessor-anomalie gestolpert:
8
9 Hm, naja, sagen wir vielleicht: Unterschiedliche Behandlung des
10 Flags-Registers. Würde mich aber wundern, wenn das nicht dokumentiert
11 wäre. Aber der Reihe nach an deinem Beispiel-Programm...
12
13 > wenn man den cmp dx, 4 durch z.b. cmp dx, 8 ersetzt, dann läuft das
14 > programm wie erwartet...
15
16 Dazu schreibe ich unten noch was.
17
18 also, hier der kritische Bereich:
19 ---snip
20 pushf
21
22 pushf
23 pop ax
24
25 popf
26 ---snip
27
28 Erzeugt hier folgenden Code: 9c 9c 68 58 9d
29
30 Das Problem: die pushf's schieben 32bit auf den Stack, verringern also
31 den Stack-Pointer jeweils um 4 (256 Byte sind für dieses Programm sehr
32 großzügig!). D.h., relativ sind wir bei -8. Dann kommt "pop ax", man
33 beachte: "68" im Code, also Wechsel zu 16bit. D.h., der Stackpointer
34 erhöht sich nur um zwei. Mit dem nächsten popf ziehst du dann die
35 oberen 16bit der Flags in die unteren und umgekehrt und hinterläßt
36 außerdem noch zwei Bytes auf dem Stack.
37
38 Da du sonst ja auch 32bit-Register benutzt, würde ich schlicht dazu
39 raten, "pop eax" zu nehmen.
40
41 Dass das dann mit dem cmp zusammenhängt, liegt wohl daran, dass hier
42 das zero-Flag entweder gesetzt sind oder nicht.
43
44 Tricks mit pushf/popf waren übrigens auch mal ein probates Mittel,
45 herauszufinden, auf welcher i32-Architektur ein Programm läuft. Ich bin
46 mir also recht sicher, dass dokumentiert ist, was hier passiert.
47
48 Gruß,
49
50 -hwh
51
52 --
53 gentoo-user-de@g.o mailing list

Replies

Subject Author
Re: [gentoo-user-de] crash bestätigung Michael Kurz <betheg@×××.net>
Re: [gentoo-user-de] crash bestätigung twist@××××××××.de