1

我是学习dalvik的新手,我想把dalvik的每一条指令都扔掉。但是无论我如何编写代码,我仍然无法获得 3 条指令。它们是'not-int'、'not-long'、'const-string/jumbo'。

我这样写是为了得到'not-int'但失败了:

int y = ~x;

Dalvik 生成了一个 'xor x, -1' 代替。

我知道'const-string/jumbo'意味着代码中有超过65535个字符串,索引是32位。但是当我在代码中清除 70000 个字符串时,编译器说代码太长了。

所以问题是:如何通过java代码在dalvik中获得'not-int'和'const-string/jumbo'?

4

1 回答 1

2

const-string/jumbo简单。正如您所指出的,您只需要定义超过 65535 个字符串,并引用后面的一个。它们不需要都在一个类文件中,只需在同一个 DEX 文件中即可。

查看dalvik/tests/056-const-string-jumbo,特别是生成包含大量字符串的 Java 源文件的“构建”脚本。

就目前而言not-intnot-long我认为它们从未产生过。我遇到dexdump -d了一堆 Android 4.4 APK,但没有找到任何一个实例。

于 2013-11-15T07:15:36.337 回答