2015-05-10 12 views
5

tháo một tệp thi hành mà tôi đã gặp phải lệnh cmove. Tôi đã tìm kiếm trên internet nhưng tôi chỉ thấy rằng đó là một động thái có điều kiện, và nếu nguồn và đích bằng với mov xảy ra. những gì tôi chưa hiểu là tại sao tôi cần nó, vì nó không thay đổi toán hạng. xin vui lòng bạn có thể giải thích cho tôi mục đích của nó, sử dụng một ví dụ quá nếu cần thiếtMục đích của lệnh cmove trong lắp ráp x86?

nhờ

Trả lời

19

Các CMOVcc hướng dẫn không so sánh nguồn và đích. Nó sử dụng các cờ từ một so sánh trước đó (hoặc hoạt động khác đặt cờ) để xác định xem di chuyển có nên được thực hiện hay không.

Ví dụ; bản này edx-ecx nếu eaxebx đều bình đẳng:

cmp eax, ebx 
cmoveq ecx, edx 

này hoạt động tương tự như:

cmp eax, ebx 
jne skip 
    mov ecx, edx 
skip: 
+0

cảm ơn bạn rất nhiều – maluz

Các vấn đề liên quan