В java-байт-код Почему приемник сначала вставляется в стек, а затем все параметры? Кажется, я помню, что это было связано с эффективностью.Байт-код 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
Думаю, что я понял это, но я не могу ответить, поскольку у меня недостаточно очков! –
Это одно из вопросов «без дела». Интересно, но ответ не имеет практического применения ... если вы не планируете создание нового набора инструкций байткода. –
ваша точка есть? Изучение того, как работает компьютер, является вопросом «праздного любопытства» для большинства. –