asm code in c++



  • Hey Jungs
    In meiner Schule sollen wir als Hausaufgabe während den Herbst-Ferien eine kleine Mini-Ampel basteln, die sich über den Computer steuern lässt. Verwenden sollen wir dazu asm und c/c++.
    Ich möchte nun die GUI mit der WINAPI schreiben und die USB Schnittstelle mit asm proggen (geht ja soviel ich weiss nicht anders...)
    Nun ist meine Frage, ob es irgendwo eine Einführung und/oder tuts zur USB Schnittstellenprogrammierung und zur Einbettung von asm code in C/C++ gibt ???

    mfg Ishildur

    P.S.
    c/c++ beherrsche ich nahezu perfekt, doch von asm habe ich noch keine Ahnung.
    Ich möchte allergings auch nicht asm als eigenständige Sprache lernen, sondern nur die Möglichkeiten, die ich im direkten Zusammenhang mit der Einbing in c/c++ habe...



  • Wieso sollte sich die USB-Schnittstelle nur mit ASM ansteuern lassen?
    Den Zugriff auf die USB-Schnittstelle bekommst Du unter WIndows nur ueber die WinAPI. Vielleicht solltest Du mit deinem Problem besser in WinAPI nachfragen, das hat mit asm nicht unbedingt viel zu tun 😉



  • Ich finde es sehr bedauerlich, dass hier so viele Leute so sehr von sich eingenommen sind !!!
    Dass USB über die WINAPI ansprechbar ist, bedeutet nicht, dass USB mit C ansprechbar ist, sondern vielmehr, dass die WINAPI funktionen für die USB programmierung in asm geschrieben wurde...
    Genau das möchte ich aber eben selber machen...

    Gruss Ishildur



  • Das schaffst du nur mit sehr sehr viel fleiß und arbeit, da du für die USB Schnitstellen Treiber zur Verfügung stellen mußt. Besorg dir am besten die USB Spezifikationen und schau dir mal Beispiel Implementierungen an (im Linux Kernel findet man USB Code (2.4 > für USB und 2.4.19 > für USBv2).

    Benutz lieber die WinAPI Schnitstellen, da dies dir einiges an arbeit und unprotabilität erspart. Außerdem glaube ich nicht, dass du irgend einen Performance Vorteil erhälst.

    Wie man Assembler Code in C/C++ einbindet hängt vom Compiler ab.

    Ich verstehe außerdem nicht, warum du dich über Nobuo T aufregst, wenn du schreibst, dass es wohl nicht anders geht und er dir sagt, dass es anders geht. Dann musst die ihn ja nicht ankacken dafür! :o



  • Original erstellt von Ishildur:
    **Dass USB über die WINAPI ansprechbar ist, bedeutet nicht, dass USB mit C ansprechbar ist, sondern vielmehr, dass die WINAPI funktionen für die USB programmierung in asm geschrieben wurde...
    **

    Nenne mir eine WinAPI-Funktion die nicht in C ausführbar ist, sondern nur in asm



  • Naja, du hast mich sicher nur falsch verstanden...

    Die WINAPI ist ja mehrheitlich in ANSI C geschrieben, allerdings kann man mit ANSI C keine externen Schnittstellen wie eben USB, LPT und COM ansprechen, also liegt doch die Vermutung nahe, dass die Programmierer der WINAPI asm code in die entsprechenden WINAPI Funktionen implementiert haben.
    Deshalb sage ich, dass die USB Schnittstelle nicht über C sondern nur über asm direkt ansprechbar ist, und desshaln eben die entsprechende WINAPI nicht ausschliesslich in C sondern zum grössten Teil in asm geschrieben wurde...



  • Ok..so ists ein Argument 🙂
    Aber solange du ein Windows-Prog schreibst reicht trotzdem vermutlich C aus um ein USB-Gerät anzusteuern. Schau dir doch mal das Driver Development Kit von Microsoft an, da sollten viele notwendige Infos sein http://www.microsoft.com/ddk/



  • Ich finde dein Argument schwachsinnig, warum soll man sich Arbeit machen, die einem schon andere abgenommen haben?

    Außerdem wirst du ohne Erfahrungen in Assembler das nicht hinbekommen.

    Und man kann mit ISO C auf Schnitstellen Zugreifen, dass ist kein Problem

    FILE *fh;
    if( (fh=fopen("/dev/lp0","w")) ==NULL)
      return 1;
    fputs("hiho\n",fh);
    fclose(fh);
    

    Das ist 100% ISO C :p (natürlich arbeitet dahinter ein Device Driver, der das ein oder andere Stückchen ASM Code enthalten könnte, aber theoretisch könnte sich das nur auf out und in Aufrufe beschränken 🙄 )


Log in to reply