Mit C/inline Assembler in C#

Gibt es eine Methode, mit C-source-gemischt mit inline-asm (das ist nicht C++ - code) in eine C# - app? Ich bin nicht wählerisch, wie es gemacht wird, wenn es erfordert die Kompilierung der C/asm in eine DLL neben der C# - app, soll es so sein. Ich bin mir bewusst, es gibt keine Bestimmung für die Verwendung der assembly in C#, daher diese Frage.

Beispielcode von dem, was ich bin versucht zu integrieren:

SomeFunc(unsigned char *outputData, unsigned char *inputData, unsigned long inputDataLength)
{
    _asm
    {
        //Assembly code that processes inputData and stores result in outputData
    }
}

Gibt es einige Zeiger/Variablen-Deklarationen in C-code vor, die Funktion wird erklärt, sondern darüber hinaus, dass es alle inline-Montage, die Erklärungen sind in der Assembler-code, wenn Sie, dass die Auswirkungen alles.

Ziel ist es, pass 'inputData" von C# und haben dann Zugriff auf 'outputData" in der C# - Programm in irgendeiner Weise. Normalerweise würden wir nur schreiben Sie den assembler-code in native C# aber wir sind auf einem engen Zeitplan, der für immer ein Prototyp zusammen und sehe keinen Grund, das Rad neu zu erfinden, sofort, wenn wir können vorübergehend zu verwenden, die vorhandene C - /Assembler-code, der in irgendeiner Weise.

  • Obwohl ich nicht sicher bin, wie ich denke, haben Sie, um Ihre nicht-c# - code in eine dll und rufen Sie es. Sie können nicht einfach Schlag in code für eine andere Sprache. Übrigens können Sie die Verwendung von Zeigern in c#, aber sehen wollen Sie nur die Nutzung bestehender code, nicht die Mühe (ich würde auch verbal missbrauchen Sie, wenn Sie getan haben)
  • Kompilieren Sie die C/asm in eine DLL ist wahrscheinlich die einfachste Möglichkeit (es technisch möglich ist, zu reservieren beschreibbar|ausführbar Speicher und diesen Weg gehen, aber es gibt nicht viel Sinn, es sei denn der code wird dynamisch). Sie gab bereits Ihre eigene Antwort obwohl, so dass ich nicht wirklich diese Frage. Verwenden Sie eine DLL problem gelöst, richtig?
  • Ich habe C-dlls in c# - code, die ziemlich gerade nach vorne, so stellen Sie sicher, dass Sie den Marshall CDecl
  • Nun, wenn Sie möchten, zu bekommen, technischen, sicher, dass ich meine Frage selbst beantwortet, indem Sie sagen: 'eine DLL verwenden", aber ich hatte erwartet, es werden Stolpersteine und Fallstricke, die mit diesen Ansatz. Alle Beispiele die ich bisher gefunden wurden Umgang mit managed C++ - code, keine Erwähnung von C mit inline Assembler, und ich war nicht sicher, ob ein C-compiler bauen würde, eine entsprechende DLL, die brauchbar war, mit einer C# app.
  • Ok wenn Ihr das so.. ich nehme an, es ist ein bisschen ein Problem/Manko, dass man nicht einfach fügen Sie es als Referenz mit einem verwalteten DLLs.
InformationsquelleAutor Tigress | 2013-09-16
Schreibe einen Kommentar