2016-11-19 3 views
2

Ich bin gespannt, ob es möglich ist, Bytecode in Java für Android ähnlich wie Sie Inline-Assembly in verwenden können. In C++ kann ich Assembly ausführen und das Ergebnis im Programm verwenden.Android Run Dalvik Bytecode wie Inline-Assembly in C++

Ich möchte Bytecode nicht zur Laufzeit, sondern vor der eigentlichen Kompilierung von apk injizieren.

// example of MSVC-syntax inline-asm syntax; not actually doing anything useful. 
__asm { 
     mov bl, 2 
     sub bl, 0 
     div bl 
     add ax, 0 
} 
+1

[Jasmin] (http://jasmin.sourceforge.net/about.html). –

+0

@Elliot Jasmin ist veraltet, und die Frage fragt sowieso nach Android. – Antimony

Antwort

4

Es gibt keine Möglichkeit, Inline-Assembler in Java einbinden. Java, die Sprache wird angegeben, und diese Spezifikation enthält keine Inline-Assembly. Ihr Java-Code wird jedoch letztendlich in Dex-Dateien kompiliert.

Die Android-Plattform sieht nur Dex-Dateien und kümmert sich nicht, wie sie erzeugt wurden. Sie können Dex-Bytecode per Hand mit Tools wie Smali schreiben. Darüber hinaus können solche benutzerdefinierten Klassen frei mit Klassen interagieren, die aus Java oder anderen Sprachen kompiliert wurden. Beachten Sie jedoch, dass die Java-Sprache strenger ist als der Bytecode, und es ist nicht garantiert, dass Nicht-Java-Bytecode Invarianten unterstützt, die im Java-Handbuch garantiert sind.

Verwandte Themen