Tôi vừa mới bắt đầu làm việc với ASM và tôi không chắc liệu sự hiểu biết của tôi về các cuộc gọi thủ tục có đúng không.làm thế nào để các cuộc gọi thủ tục làm việc trong assembler?
nói tại một số điểm trong các mã có một cuộc gọi thủ tục
call dword ptr[123]
và thủ tục bao gồm chỉ có một lệnh, ret:
ret 0004
những gì sẽ là ảnh hưởng của cuộc gọi thủ tục này và giá trị trả về sẽ được lưu ở đâu? Tôi đọc ở đâu đó rằng giá trị trả về 2 byte sẽ được lưu trữ trong AX, nhưng khi tôi thay thế cuộc gọi thủ tục theo
mov AX, 0004
(cùng với NOP cần thiết) chương trình bị treo.
cảm ơn! hầu hết các hướng dẫn tôi googled chỉ được sử dụng ret, và không giải thích ret ngay lập tức hoạt động. Tôi đã bối rối hơn khi bộ ghép LLVM dường như có một lệnh "ret". –
int3
có lý do nào khiến RET có thể quay trở lại một nơi nào đó không phải là cuộc gọi không? Tôi vừa tạo ra một câu hỏi và tìm thấy câu hỏi này trong các câu hỏi liên quan – lisovaccaro
có, nếu bạn thao tác địa chỉ trả về 'CALL' được đẩy lên ngăn xếp. –