Tôi có một số mã lắp ráp gnu cho kiến trúc x86_64 được tạo ra bởi một công cụ và có những hướng dẫn sau:Lệnh callq là gì?
movq %rsp, %rbp
leaq str(%rip), %rdi
callq puts
movl $0, %eax
tôi không thể tìm thấy tài liệu thực tế trên hướng dẫn "callq".
Tôi đã xem http://support.amd.com/TechDocs/24594.pdf là "Hướng dẫn sử dụng trình lập trình 3 của AMD64: Hướng dẫn chung và hướng dẫn hệ thống" nhưng chúng chỉ mô tả CALL hướng dẫn gần và xa.
Tôi đã xem tài liệu về trình kết hợp gnu https://sourceware.org/binutils/docs/as/index.html nhưng không thể tìm thấy phần chi tiết hướng dẫn mà bộ phận hỗ trợ.
Tôi hiểu rằng đó là lời gọi hàm, nhưng tôi muốn biết chi tiết. Tôi có thể tìm thấy chúng ở đâu?
Tôi rất tò mò, @Peter, tại sao bạn thường đăng câu trả lời dưới dạng nhận xét thay vì câu trả lời. – prl
@prl: Tôi làm điều đó khi tôi nghĩ rằng chúng có thể trùng lặp, nhưng tôi không dành thời gian để tìm một mục tiêu lừa đảo. Tôi sẽ tìm cái này; nếu nó không phải là một bản sao nó là giá trị bằng văn bản một câu trả lời thực sự. Và bạn nói đúng, tôi có thể vừa mới đăng câu trả lời đó. –
@prl: Tôi không tìm thấy bất kỳ câu hỏi nào về 'callq' cụ thể. Và có thực sự là không rõ ràng công cụ để nói về mặc định operand-kích cỡ cho các chi nhánh và hướng dẫn ngăn xếp khác. Đây là một câu hỏi mới, nhưng thực sự là một câu hỏi đáng trả lời cho một sự thay đổi, nếu tôi ngừng gắt gỏng với tất cả các câu hỏi "mã của tôi không hoạt động và tôi không biết bất cứ điều gì". –