1 |
Hi, |
2 |
|
3 |
On Sun, 14 May 2006 20:07:01 +0200 (CEST) |
4 |
twist@××××××××.de wrote: |
5 |
|
6 |
> darüber hab ich auch schon lange gegrübelt. meine docu sagt aber: |
7 |
> |
8 |
> PUSHF/PUSHFD |
9 |
> |
10 |
> Pushes the flags register onto the stack. PUSHF always pushes the 16-bit |
11 |
> flags register. On the 80386/486, use PUSHFD to push the 32-bit flags |
12 |
> register. |
13 |
|
14 |
Hm, welche Doku? In der NASM-Doku (siehe meine Mail hiervor) steht das |
15 |
anders. Da steht, dass bei PUSHF die Behandlung davon abhängt, in |
16 |
welchem Modus man gerade ist. Wenn du wirklich auf 32bit nur mit den |
17 |
unteren 16bit arbeiten willst, müsstest du PUSHFW nehmen. Daraus würde |
18 |
dann 0x66 0x9c (im Modus BITS 32). |
19 |
|
20 |
> und die dinger werden mit 10011100 codiert, also 0x9c. anscheinend ist das |
21 |
> abhängig davon, ob die kiste im protected mode läuft. das würde auch |
22 |
> abwärtskompatibilität erklären. |
23 |
|
24 |
Siehe ebenfalls die NASM-Doku: |
25 |
|
26 |
> > Dass das dann mit dem cmp zusammenhängt, liegt wohl daran, dass hier |
27 |
> > das zero-Flag entweder gesetzt sind oder nicht. |
28 |
> |
29 |
> das ding wird intern doch so ausgewertet: |
30 |
> |
31 |
> cmp op1, op2 |
32 |
> |
33 |
> tmp = op1 - op2 |
34 |
> |
35 |
> die flags werden tmp entsprechend gesetzt. |
36 |
> --> damit ist das zero-flag immer gleich (bei cmp 0, 4 und cmp 0, 8). |
37 |
|
38 |
Ja, allerdings schreibst du mit deinem POPF auch flags, die "reserved" |
39 |
sind. Da muss man evtl. kein deterministisches Verhalten erwarten... |
40 |
Aber meine Theorie mit dem Zero-Flag ist auch nicht haltbar. |
41 |
|
42 |
> ja, stimmt. aber dennoch darf mir ein fehlerhaftes programm nicht den |
43 |
> x-server unterm a..... wegballern. |
44 |
|
45 |
Wenn es als root oder eben dem User mit dem entsprechenden Rechten |
46 |
läuft, schon. |
47 |
|
48 |
-hwh |
49 |
|
50 |
-- |
51 |
gentoo-user-de@g.o mailing list |