Android 运行 Dalvik 字节码类似于 C++ 中的内联汇编
Android run Dalvik bytecode like inline assembly in C++
我很好奇是否可以在 Java 中为 Android 运行 字节码,类似于在 c++ 中使用内联汇编的方式。在 C++ 中,我可以 运行 汇编并在程序中使用它的结果。
我不想在 运行 期间但在实际编译 apk 之前注入字节码。
// example of MSVC-syntax inline-asm syntax; not actually doing anything useful.
__asm {
mov bl, 2
sub bl, 0
div bl
add ax, 0
}
无法在 Java 中嵌入内联汇编。 Java,指定了语言,该规范不包括内联汇编。但是,您的 Java 代码最终会编译成 dex 文件。
Android 平台只看到 dex 文件,并不关心它们是如何生成的。可以使用smali等工具手写dex字节码。此外,这种自定义 类 可以自由地与由 Java 或其他语言编译的 类 交互。但是请注意,Java 语言比字节码更严格,并且不能保证非 Java 字节码支持 Java 语言中保证的不变量。
我很好奇是否可以在 Java 中为 Android 运行 字节码,类似于在 c++ 中使用内联汇编的方式。在 C++ 中,我可以 运行 汇编并在程序中使用它的结果。
我不想在 运行 期间但在实际编译 apk 之前注入字节码。
// example of MSVC-syntax inline-asm syntax; not actually doing anything useful.
__asm {
mov bl, 2
sub bl, 0
div bl
add ax, 0
}
无法在 Java 中嵌入内联汇编。 Java,指定了语言,该规范不包括内联汇编。但是,您的 Java 代码最终会编译成 dex 文件。
Android 平台只看到 dex 文件,并不关心它们是如何生成的。可以使用smali等工具手写dex字节码。此外,这种自定义 类 可以自由地与由 Java 或其他语言编译的 类 交互。但是请注意,Java 语言比字节码更严格,并且不能保证非 Java 字节码支持 Java 语言中保证的不变量。