OVH Cloud OVH Cloud

exception windows 32 et registre FS du processeur

5 réponses
Avatar
heinquoi
Bonjour à tous,


je regarde a la loupe le pb des exceptions sous Windows 32 (
http://www.microsoft.com/msj/0197/Exception/Exception.aspx ) et j'ai un
problème avec les adresses.
En effet, lorsqu'une exception système est levé, windows recherche le
descripteur d'exception avec FS:[0] .
Or j'ai un problème avec les adresses. FS étant égale à 0x0038, j'ai
pensé que l'adresse du descripteur d'exception était a l'adresse
0x00380000.... Or pas du tout .... Et je vois pas ce qui cloche dans mon
résonnement.



--
Cordialement,
Heinquoi

5 réponses

Avatar
Christian
http://kos.enix.org/~d2/snapshots/kos-doc_current/kos_book/kos_book-html/node4.html

"L'adresse logique est sous la forme segment:offset.

*En mode réel*, le calcul est simple : on multiplie le numéro du segment par
16, et on ajoute l'offset. Ainsi l'adresse logique emph0x60:0x20 équivaut en
linéaire à emph0x60 * 16 + 0x20 = 0x620.

*En mode protégé*, c'est plus complexe, puisque les segments sont définis
par le système, et leur emplacement et taille varient en fonction du système
d'exploitation installé".
Avatar
heinquoi
dans son post, Christian nous à dit:



http://kos.enix.org/~d2/snapshots/kos-doc_current/kos_book/kos_book-html/node4.html

"L'adresse logique est sous la forme segment:offset.

*En mode réel*, le calcul est simple : on multiplie le numéro du
segment par 16, et on ajoute l'offset. Ainsi l'adresse logique
emph0x60:0x20 équivaut en linéaire à emph0x60 * 16 + 0x20 = 0x620.

*En mode protégé*, c'est plus complexe, puisque les segments sont
définis par le système, et leur emplacement et taille varient en
fonction du système d'exploitation installé".



merci Christian pour toutes ces informations détaillées.
Je me demandais si il y avait un moyen simple de convertir une adresse
offset:segment en adresse linaire ( dans le cas ou c est possible ) sous
mode protégé. en d'autre mots, peut on simplement accéder aux tables des
descripteurs GDT, LDT et IDT pour faire la conversion "manuellement".

merci

--
Cordialement,
Heinquoi
Avatar
Aurélien REGAT-BARREL
Je crois que LGDT n'est pas une instruction protégée. Donc moyennant un peu
d'asm ça devrait être faisable.

--
Aurélien REGAT-BARREL
Avatar
Vincent Burel
"Aurélien REGAT-BARREL" wrote in message
news:416aa475$0$295$
Je crois que LGDT n'est pas une instruction protégée. Donc moyennant un


peu
d'asm ça devrait être faisable.



LGDT , ca load le descripteur de table globale dans le registre GDTR , sous
windows, si ca passe ca risque de planter :-)
vaut mieux essayer la version STORE : SGDT par exemple.

VB
Avatar
AMcD®
heinquoi wrote:

Je me demandais si il y avait un moyen simple de convertir une adresse
offset:segment en adresse linaire ( dans le cas ou c est possible )
sous mode protégé. en d'autre mots, peut on simplement accéder aux
tables des descripteurs GDT, LDT et IDT pour faire la conversion
"manuellement".



Je publierai un post (long) à ce sujet ce soir.

--
AMcD®

http://arnold.mcdonald.free.fr/