jmpq
chỉ là một bước nhảy không có điều kiện đến địa chỉ đã cho. Chữ 'q' có nghĩa là chúng ta đang xử lý các từ tứ (dài 64 bit).
*0x402680(,%rax,8)
: Đây là cách viết địa chỉ trong hội đồng x 86. Bạn đúng khi nói rằng thường có một thanh ghi trước dấu phẩy đầu tiên, nhưng bạn vẫn tuân thủ các quy tắc tương tự nếu không có đăng ký nào được chỉ định.
Định dạng hoạt động theo cách này: D(reg1, reg2, scalingFactor)
trong đó D là viết tắt của chuyển vị. Displacement về cơ bản chỉ là một số nguyên. reg1
là thanh ghi đầu tiên hoặc cơ sở. reg2
là thanh ghi thứ hai và scalingFactor
là một trong 2, 4, 8 (thậm chí có thể là 1, nhưng tôi không chắc chắn về điều đó). Bây giờ, bạn có thể lấy địa chỉ của mình bằng cách thêm các giá trị theo cách này: Displacement + (giá trị tại reg1
) + scalingFactor
* (giá trị tại reg2
).
Tôi không hoàn toàn chắc chắn về dấu hoa thị ở phía trước địa chỉ, nhưng tôi đoán là điều đó có nghĩa là giá trị chuyển được lưu trữ tại địa chỉ đó.
Hy vọng điều này sẽ hữu ích.
lol, nhưng tôi phải biết nó để tôi có thể gỡ lỗi một số mã c. và cũng cho các bài kiểm tra lớp học. – de1337ed