gpt4 book ai didi

java - 将代码转换为 IJVM

转载 作者:太空宇宙 更新时间:2023-11-04 14:25:04 24 4
gpt4 key购买 nike

我已将代码片段翻译为 IJVM,但不确定它是否有效。告诉我我做得对还是错。或者我如何检查代码是否有效。这是代码。

a = 0 sum = x  
while( a<= x){
sum += a;
a++;
}

这是我所做的 IJVM 代码://下面3行设置a = 0

ILOAD a  
BIPUSH 0
ISTORE a
//following 2 lines set sum = x
ILOAD x
ISTORE sum
//checking the condition of the loop
L1: ILOAD a
ILOAD x
ISUB
IFEQ L2 //GO TO BODY OF WHILE LOOP
ILOAD x
ILOAD a
ISUB
IFLT L3 //GO OUT OF WHILE LOOP
GOTO L1
//L2 IS THE BODY OF WHILE LOOP
L2: ILOAD sum
ILOAD a
IADD
ISTORE sum
ILOAD a
IPUSH 1
IADD
ISTORE a
GOTO L1 //AGAIN GO BACK TO CHECK THE CONDITION OF WHILE LOOP

L3:

最佳答案

不需要第一条指令 ILOAD A。它将 A 放入堆栈中,但从未使用该值。

当 A < X 时,第一个 GOTO L1 会导致无限循环。将其删除。让代码落入循环体。

BIPUSH 1 代替 IPUSH 1

不要使用 ISUB 后跟 IFEQ,而是使用 IF_ICMPEQ。

你的想法是对的。

要测试代码,请进行手动跟踪。用笔和纸记下变量 A、X、SUM 的初始值。当您单步执行代码时更新变量的值(以列为单位)。

关于java - 将代码转换为 IJVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26766011/

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