【问题标题】:When will the instruction "filled-new-array" appear?“填充新数组”指令何时出现?
【发布时间】:2013-11-01 05:46:54
【问题描述】:

现在我想看看这条指令的每个参数实际上是什么意思,但不管我用什么方式编写 java 代码,而且我从未在 dex 中看到过填充新数组:

int[] iArr1 = new int[5];//just a new-array
int[] iArr2 = {3, 4, 5, 6};//a "new-array" and "fill-array-data"

我认为 iArr2 应该生成一个填充新数组,并且元素是 那么,如何在dex文件中生成填充新数组指令呢?

每一个有用的答案都将不胜感激!

【问题讨论】:

    标签: java dalvik dex instructions


    【解决方案1】:

    填充新数组操作码通常用于创建多维数组。

    以下任何一项都应该为您提供填充新数组的指令。

    int[][] iiArr1 = new int[1][2];
    int[][] iiArr2 = new int[][] { { 3, 4, 5, 6 }, { 7, 8, 9, 0} };
    

    要找到其他操作码的类似示例,我建议查看 dx 工具的测试,其中包含示例 java 代码来生成大多数操作码。例如,this test 具有生成填充新数组操作码的示例 java 代码

    【讨论】:

    • 是的,你给的第一行会让我填充新数组。第二行只是生成新数组和填充数组数据。当数组是6维或更多维时,它会带来填充新数组/范围。
    • 哎呀,你是对的。我本可以发誓第二个在我尝试时产生了一个全新的数组,但我只是再次尝试并确认它没有。
    • 嗯,请提出新问题。 :) 现在我需要说明:const-string/jumbo、not-int 和 not-long。但是无论我如何编写java代码,android的'dx'工具都会生成带有-1的'xor',而不是'not-int'或'not-long'。并且只有没有'jumbo'的const-string。那你能告诉我我该怎么做吗,非常感谢!
    • 确实是新问题:)。最好创建一个新问题,而不是尝试在 cmets 中提出一个新问题。
    猜你喜欢
    • 2013-04-08
    • 2016-06-19
    • 2013-11-26
    • 2017-03-19
    • 2020-05-12
    • 2014-04-05
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多