在 dalvik 中,什么表达式会生成指令'not-int'和"const-string/jumbo"?



我是学习达尔维克的新手,我想把达尔维克的每一条指令都扔掉。但是无论我如何编写代码,我仍然无法获得 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"?

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

看看dalvik/tests/056-const-string-jumbo,特别是生成具有大量字符串的Java源文件的"build"脚本。

not-intnot-long而言,我认为它们永远不会产生。 我dexdump -d了一堆Android 4.4 APK,但没有找到任何一个实例。

最新更新