1

je sais que cela a déjà été posté, mais je me permet d'en remettre une couche, parce que ca
me saoule grave. Windaube ne m'autorise pas à exécuter le code ci dessous:

int main(int argc, char* argv[])
{
__asm {
mov dl, 1
mov ah, 08h
int 13
};
return 0;
}

il me met l'erreur suivante à l'appel de l'int:
First-chance exception in BIOS.exe: 0xC0000005: Access Violation.

Mais ce qui me tue encore plus c'est que "__asm int 3" marche sans pb!

et certaines source de MFC, du DDK ou de DirectX (cf wincore.cpp et compagnie) sont remplis
d'appels à des int, lesquels ne plantent pas!!!! Y'a foutage de gueule là, non?
Eclairez moi, j'en ai ma claque là!

2

-

3

[cross]

Il me semble que le nom de ton OS, sans fautes, c'est "Windows"...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Orion_ :
je veux pas dire de betise mais les interuptions ça marche qu'en mode console (et encore, pas toute je crois)

Mode MS-DOS (émulé par NTVDM ou qqc du genre) tu veux dire... Du coup ça nous ramène au même problème, ça ne fonctionne que sous DOS ^^

Sinon accessoirement, certains trucs doivent fonctionner en mode kernel, donc tu dois pouvoir te démerder pour écrire du code en mode kernel (i.e. service ou driver), mais de toute façon, tu arriveras au mieux a faire planter ton système donc bon :/
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

5

int main(int argc, char* argv[])
{
__asm {
mov dl, 1
mov ah, 08h
int 13
};
return 0; }
Pense a verifier si la base par defaut du compilateur est bien celle que tu utilises par defaut (decimal ?).
Theoriquement, on note toujours les numeros d'interruption en hexadecimal : voulais-tu appeler l'interruption 0x13, ou la 0x0D ?
Je sais que ca ne resout pas ton probleme, mais ca peut en creer d'autres par la suite ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

6

Pense a verifier si la base par defaut du compilateur est bien celle que tu utilises par defaut (decimal ?).
Theoriquement, on note toujours les numeros d'interruption en hexadecimal : voulais-tu appeler l'interruption 0x13, ou la 0x0D ? Je sais que ca ne resout pas ton probleme, mais ca peut en creer d'autres par la suite ...

Pas de pb pour ca, mais merci qd mêmewink

7

Avec...bcp de retard :
- Son code, théoriquement, *peut* marcher si un driver approprié est installé, qui détecte ce cas particulier et émule l'int 13 du bios
- Vertyos> t'es lourd tongue
- GoldenCrystal> oué en fait les trucs en "mode dos" utilisent un machine virtuelle 16 bits. C'est un mode spécial d'exécution des processeurs 386+ qui permet de lancer, sous le contrôle de l'os, des programmes conçus pour le mode réel. Cela dit, ces programmes n'ont pas accès au matos pour autant : l'appel de l'int13, par exemple, est intercepté par un composant spécial (me rappelle plus le nom), qui le dispatche vers le driver approprié ou l'émule on l'ignore... bref il en fait ce qu'il veut (même s'il vaut mieux qu'il émule l'appel bios si on veut que ça marche). Exception : win9x ne redirigeaient pas vers un driver mais faisaient la redirection vers la véritable int du bios.

Ah oué, point annexe : le mode MS-DOS vous appuyez pas trop dessus, ça ne fonctionne plus sur les processeurs 64 bits (sauf si vous installez un OS 32 bits mais dans ce cas je vois pas l'intérêt de prendre un proc 64 hum).

8

spectras :
Ah oué, point annexe : le mode MS-DOS vous appuyez pas trop dessus, ça ne fonctionne plus sur les processeurs 64 bits (sauf si vous installez un OS 32 bits mais dans ce cas je vois pas l'intérêt de prendre un proc 64 hum).

Windows XP 64 etant pas dispo légalement en magazin, bref

Sinon meme si 64 bits toussa, le bios existe tjrs hein ^^


Et GoldenCrystal: les services sous windows ne sont (et heureusement !) pas en mode kernel !!!
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

9

spectras :
Ah oué, point annexe : le mode MS-DOS vous appuyez pas trop dessus, ça ne fonctionne plus sur les processeurs 64 bits (sauf si vous installez un OS 32 bits mais dans ce cas je vois pas l'intérêt de prendre un proc 64 hum).

Ah ouais ? Ils ont viré toute la couche de compatibilité MS-DOS, ou seulement une partie ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

10

Ben le mode vm86 n'existe plus quand le processeur tourne en 64 bits.

11

Sinon meme si 64 bits toussa, le bios existe tjrs hein ^^
Ben justement il existe mais il n'est plus utilisable.

"BIOS callbacks on an AMD Athlon 64 processor or an AMD Opteron processor platform in 64-bit mode are not supported by AMD64 operating systems. An operating system loader must be invoked in legacy mode with paging disabled, so that the loader can use 16/32-bit BIOS callbacks."

En fait, il n'y a tout simplement rien de prévu dans le proc qui permette d'appeler des fonctions du bios depuis le mode 64 bits natif.

12

spectras :
Ben le mode vm86 n'existe plus quand le processeur tourne en 64 bits.

et on peut pas repasser en 32 bits pour les processus dos ? sad

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

13

Pollux
:
spectras :
Ah oué, point annexe : le mode MS-DOS vous appuyez pas trop dessus, ça ne fonctionne plus sur les processeurs 64 bits (sauf si vous installez un OS 32 bits mais dans ce cas je vois pas l'intérêt de prendre un proc 64 hum).

Ah ouais ? Ils ont viré toute la couche de compatibilité MS-DOS, ou seulement une partie ?

le Win16 a été purement et simplement supprimé oui

Spectras: oui mais qu'en est-il des proco intel ?

Sinon reste plus qu'a devel un emulateur kivabien pour compenser ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

14

Pollux> Si tu veux faire tourner des progs en vm86, il faut que le proc soit en mode 32 bits (genre si t'installe windows 32 bits là ça va marcher). C'est pas possible autrement.
Godzil> c'est une bonne question. Ils ont quoi comme proc x86-64 bits intel en ce moment ?

15

Godzil> oué pour l'émulateur il en existe déjà un pour linux. Il a pas encore été porté à windows (par contre il doit tourner sous macosx je pense).

16

spectras :
Pollux> Si tu veux faire tourner des progs en vm86, il faut que le proc soit en mode 32 bits (genre si t'installe windows 32 bits là ça va marcher). C'est pas possible autrement.
Godzil> c'est une bonne question. Ils ont quoi comme proc x86-64 bits intel en ce moment ?

Les derniers Pentium/Celeron D si je m'abuse (les dual cores le sont ça j'en suis sur)
spectras :
Godzil> oué pour l'émulateur il en existe déjà un pour linux. Il a pas encore été porté à windows (par contre il doit tourner sous macosx je pense).

Huu ? Quel rapport entre MacOS X et la choucroute ? Les mac utilise le PowerPC pas du x86, et que je sache les powerpc G5 en mode 64b sont totalement rétrocompatible avec tout les PowerPC 32b de la création (601,603,604,G3/750,g4)
D'ailleurs je ne suis meme aps sur que le G5 puisse fonctionner en pseudo 32b comme le font les AMD64 et les x86-64 d'intel
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

17

Huu ? Quel rapport entre MacOS X et la choucroute ? Les mac utilise le PowerPC pas du x86, et que je sache les powerpc G5 en mode 64b sont totalement rétrocompatible avec tout les PowerPC 32b de la création (601,603,604,G3/750,g4) D'ailleurs je ne suis meme aps sur que le G5 puisse fonctionner en pseudo 32b comme le font les AMD64 et les x86-64 d'intel

Fastoche : comme il s'agit d'un émulateur, il est indépendant de l'architecture matérielle.
Et comme MacOS X est un Unix, il doit probablement marcher dessus.
L'intérêt est de faire fonctionner des progs msdos sur macosx, aucun rapport avec l'émulation de vieux powerpc.

Pour les derniers pentiums je sais pas je regarderai à l'occasion les docs.

18

ha ok

ben ça emuler des progs msdos, c'est pas ce qui manque hein grin
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

19

Ben les émulateurs de progs msdos pour windows, c'est pas encore très répandu ^^ cheeky

20

Ton code ne peut fonctionner que sous DOS, windows 3.1x, c'est tout. Pour taper l'int 13, il faut utiliser utiliser un driver systeme. Si tu es sous 98, il faut utiliser un driver de type vxd qui te permettra d'acceder a cette interruption en ring 0.
Pour 2000/xp et superieur il faut un driver systeme .sys qui te permettra aussi d'attaquer en ring 0 cette interruption meme si c'est fortement deconseillé. Hmm, eventuellement sous xp tu peux t'en passer si tu causes une exception genre une division par 0 et tu "la catch" via un SEH qui lui te permettra d'avoirla meme chose que les deux autres.

A mon avis le mieux a faire, c'est un ptit coup de dosbox.