• [^] # Re: BIOS ?

    Posté par . En réponse au message Assembleur inline dans gcc. Évalué à 1.

    Alors la je plussoie violament la remarque precedante.

    Est-ce que je suis sûr que je ne vais pas écraser une donnée qui a été mise précédemment dans le registre ax par le compilateur C ?

    C'est quasi certain que tu l'ecrase oui, l'assembleur inline n'est pas encadré par des push/pop. Pour le voir demande a gcc de generer et laisser le code pseudo-assembleur du code en C pour voir ca.

    ... ça plante sur un segfault, et je ne sais absolument pas pourquoi ! Pire encore, je ne sais pas comment je peux le savoir ! J'ai vérifié que les I/O de la carte étaient activées dans le BIOS, mais malgré tout, dès que j'appelle l'interruption, boum, plantage...
    Sous linux l'espace memoire est partagé en deux, user et kernel. Le user-space n'as aucun acces direct au ressource physique du systeme, aucun acces au hard ou a la memoire il doit passer par le kernel pour demander l'acces ou les operation permise(par un driver).
    Sur toutes les machines, quand on execute un programme en espace user la tentative d'utilisation des certaines instructions assembleurs provoque un exeception qui se traduit ensuite par un segfault, c'est typiquement ce qu'il se passe quand tu fais asm("int 0ドルx15");
    int est une instruction du mode protégé qui ne peut pas etre executé quand le run-level du proc est "user".
    Si tu veut plus d'info sur le driver a ecrire post dans le forum kernel