Hiện tại tôi chỉ đang ở trong một dự án sử dụng bytecode java. Tôi thường thấy rằng khi tạo một thể hiện lớp mới và gọi một phương thức trên nó, bytecode sẽ giống như:Tại sao DUP khi tạo cá thể mới
NEW <MyClass>
DUP
INVOKESPECIAL <MyClass.<init>>
Tại sao nên làm "DUP"? Từ VM Spec, tôi nhận được mô tả "Nhân đôi giá trị trên cùng của chồng toán hạng và đẩy giá trị trùng lặp lên ngăn xếp hạng". Nhưng tại sao phải sao chép giá trị trên cùng trên toán hạng là cần thiết ở đây? Cảm ơn.