【发布时间】:2012-05-12 17:24:34
【问题描述】:
在java字节码中,为什么接收者首先被压入堆栈,然后是所有参数?我似乎记得它与效率有关。
方法调用和设置字段都是如此。
方法调用
class X {
int p(int a) {
//Do something
}
int main() {
int ret = p(1);
}
}
主方法编译为:
aload_0 // Load this onto the stack
iconst_1 // Load constant 1 onto the stack
invokevirtual <int p(int)> from class X
设置字段:
class X {
int x;
int main() {
x = 1;
}
}
主方法编译为:
aload_0 // Load this onto the stack
iconst_1 // Load constant 1 onto the stack
putfield <int x> from class X
【问题讨论】:
-
我想我已经弄明白了,但我没有足够的分数,所以我无法回答!
-
这是那些“空闲的好奇心”问题之一。有趣,但答案没有实际用处……除非您正在考虑设计一个全新的字节码指令集。
-
你的意思是?对大多数人来说,了解计算机的工作原理是一个“无聊的好奇心”问题。
-
好吧...如果是闲散的好奇,您应该自己做研究...
标签: java parameters jvm stack bytecode