为什么 Java 中没有无符号类型,而 DEX 可执行文件中有无符号类型?
Why is there unsigned type in DEX executables when there's no unsigned type in Java?
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 中的 meta-data 包含方法计数和文件偏移量之类的内容,与任何特定语言无关。
此外,DEX 可用于 non-Java 种语言。
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 中的 meta-data 包含方法计数和文件偏移量之类的内容,与任何特定语言无关。
此外,DEX 可用于 non-Java 种语言。