android - Java 中没有无符号类型,为什么 DEX 可执行文件中有无符号类型?

标签 android types dalvik unsigned

DEX 格式的无符号类型有:

ubyte       8-bit unsigned int
ushort      16-bit unsigned int, little-endian
uint        32-bit unsigned int, little-endian
ulong       64-bit unsigned int, little-endian
uleb128     unsigned LEB128, variable-length (see below)
uleb128p1   unsigned LEB128 plus 1, variable-length (see below)

https://source.android.com/devices/tech/dalvik/dex-format.html

然而,由于 Java 8 和 Android 的 dx 以及 Jack 和 Jill 编译器仍然不支持 Java 8,因此才引入了无符号类型。那么为什么要引入这些类型呢? Java 代码是否有机会发出使用这些类型的指令?

最佳答案

这些类型是针对 DEX 文件格式本身的。 header 中的元数据(包含方法计数和文件偏移量等内容)与任何特定语言无关。

此外,DEX 还可以用于非 Java 语言。

关于android - Java 中没有无符号类型,为什么 DEX 可执行文件中有无符号类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29237552/

相关文章:

Android 4.4 KitKat 随机崩溃

java - packed switch 和 sparse switch dalvik操作码的区别

android - Android 中的 ODEX 文件是什么?

android - 如何从 Android 的上下文菜单中删除 ListView 对话框项?

python - 显示为 Python 列表类型的 Matplotlib 图

java - 为什么调用静态方法时用括号包裹类型是非法的?

c - 128 位类型错误

java - 如何将System.currentTimeMillis转换为时间格式? (HH :MM:SS)

android - System.nanoTime() 在 Android 中给出了错误的时间

安卓扫描渐变