2016-11-02 4 views
0

fangen Ich benutze asmjit und ich stieß auf ein Problem. Wenn die C++ - Ausnahme von einer Funktion ausgelöst wird, die in generiertem JIT-Code (x64) aufgerufen wird, kann sie nicht abgefangen werden, auch wenn ich außerhalb des JIT-Funktionsaufrufs versuche, zu fangen.Kann keine Ausnahme in asmjit

+0

Bitte zeigen Sie uns eine [MCVE]. –

+0

Ich würde vorschlagen, die Frage zu einer allgemeineren Frage zu ändern, etwas wie "Wie man Ausnahmen in JIT-generiertem Code behandelt", da es nicht genau mit asmjit verwandt ist - ich meine, dass die OP nach einer Lösung fragt, die asmjit betrifft, aber die Frage könnte zuerst generisch beantwortet werden und dann gezeigt werden, wie es mit asmjit auch gemacht werden könnte. – Petr

Antwort

0

Die Antwort von asmjit des Autors Petr Kobalíček via E-Mail, sehr hilfreich:

es auf OS Sie zielen stark abhängig ist. AsmJit bietet keine Hilfefunktionen für die Ausnahmebehandlung. Daher müssen Sie Ausnahmen selbst behandeln.

Wenn Sie unter Windows sind, können Sie überprüfen: https://msdn.microsoft.com/en-us/library/1eyas8tf.aspx

Auch kann die Überprüfung andere JIT-Motoren wie V8 helfen zu verstehen, wie JITted Code in der Regel Ausnahmen behandelt. Unter Windows können Sie einen Ausnahmebehandler für den gesamten virtuellen Adressraum installieren, den JIT-Code verwendet. Auf diese Weise müssen Sie keine Abwicklungsdaten für jede Funktion einbetten.