当Java中没有无符号类型时,为什么DEX可执行文件中存在无符号类型?

时间:2015-03-24 16:08:24

标签: 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代码是否有机会发出使用这些类型的指令?

1 个答案:

答案 0 :(得分:3)

这些类型适用于DEX文件格式本身。标题中的元数据(包含方法计数和文件偏移量)与任何特定语言无关。

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