Tôi đang chơi xung quanh với gcc -S
để hiểu cách thức hoạt động của bộ nhớ và ngăn xếp. Trong những vở kịch này tôi đã tìm thấy một vài điều không rõ ràng với tôi. Bạn có thể vui lòng giúp tôi hiểu lý do không?Tại sao gcc thực hiện điều này khi tạo mã assembly?
Khi gọi chức năng đặt tham số cho một gọi là một nó sử dụng
mov
đểesp
thaypush
. Lợi thế không sử dụngpush
là gì?Chức năng hoạt động với các đối số vị trí xếp chồng của chúng trỏ đến chúng là
ebp + (N + offset)
(trong đó N là kích thước dành riêng cho địa chỉ trả lại). Tôi mong đợi để xemesp - offset
đó là dễ hiểu hơn. Lý do để sử dụngebp
là điểm cơ bản ở khắp mọi nơi? Tôi biết những cái này đều bình đẳng nhưng sao?Ma thuật này vào đầu năm
main
là gì? Tại sao chỉ cần khởi tạoesp
theo cách này?and esp,0xfffffff0
Cảm ơn,
Đây có thể là 3 câu hỏi riêng biệt. Dù sao, câu trả lời cho điểm thứ 3 là sắp xếp ngăn xếp. – Mysticial