gpt4 book ai didi

java - 字节码指令 : Do I understand well

转载 作者:行者123 更新时间:2023-12-01 15:38:11 27 4
gpt4 key购买 nike

我正在学习 Java 字节码。我想知道我是否正确理解了这个字节码过程

我还没有完成,但这只是好路的开始..

00000000    aload_0 
// load param1 (String)
// Stack is [StringParam]
00000001 invokevirtual char[] java.lang.String.toCharArray()
// split variable in an array of char
// Stack is [ReferenceToCharArray] ?
00000004 dup
// duplicate the top of operand stack and put it back at the end
// Stack is now [ReferenceToCharArray ReferenceToCharArray]
00000005 arraylength
// Return array's length
// Stack is now [ReferenceToCharArray ArrayLength]
00000006 iconst_2
// push 2 in stack
// Stack is now [ReferenceToCharArray ArrayLength 2]
00000007 if_icmpge pos.00000013
// If the Array length is greater or equals to 2
// Stack is now [ReferenceToCharArray]
00000013 areturn
// Return the array
// Stack is empty

最佳答案

调用虚拟后,您的堆栈错误,param1 不再位于堆栈顶部。而且我不认为 3 会被放入堆栈中。

if_icmpge 真正做的是将 invokevirtual 返回的 char 数组的长度与 2 进行比较

关于java - 字节码指令 : Do I understand well,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8541762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com