Ports mit Inline Assembly



  • Hy! Ich wollte euch mal fragen, wie ich, was in ASM z.B. "in al, 0x60" und "out al, 0x60", machen kann. Das ist doch nur mit Inline Assembly möglich. Oder? Also ich habe mir folgenden Code gebastelt:

    void outb(unsigned short port, unsigned char value) {
      asm (
        "out %%al, %%dx\n\t"
      : : "a"(value), "d"(port)
      );
    }
    
    int inb(unsigned short port) {
      int al;
      asm (
        "in %%dx, %%al\n\t"
        : "=a"(al)
        : "d"(port)
      );
      return(al);
    }
    

    Beim Compilieren und Linken macht er keine Probleme, aber wenn ich das starte, stürtzt alles ab (ohne die funktion überhaupt zu verwenden????). Findet ihr da einen Fehler? (Übrigens: Ich verwende GCC.)



  • Ups! Ich glaube das ANSI-C Forum wäre besser gewesen, tut mir leid.


Anmelden zum Antworten