Muvl là gì? Bài báo nói về muovl, một công cụ mã nguồn mở để chuyển đổi mã hợp ngữ x86 thành lệnh dịch chuyển MOV. MOV tính toán một địa chỉ, sử dụng bộ chế độ địa chỉ khá phong phú của x86, sau đó đọc hoặc ghi dữ liệu tại địa chỉ đó. MOV cũng có thể được sử dụng để sửa đổi các vị trí bộ nhớ hiện có, chẳng hạn như nhân hoặc cộng hai thanh ghi. Lệnh bù MOV khác với cú pháp của Intel ở chỗ thứ tự các toán hạng bị đảo ngược; địa chỉ trong thanh ghi đích ở vị trí đầu tiên, (các) thanh ghi nguồn ở vị trí tiếp theo và một tiền tố được thêm vào để biểu thị quy mô của thao tác: movl %edx,%eax (di chuyển nội dung của thanh ghi edx vào thanh ghi eax). Trong GAS, chúng tôi sử dụng các hậu tố b cho byte (8 bit), w cho từ (16 bit) và l cho độ dài (32 bit). Tiền tố r (thanh ghi) chỉ ra rằng thanh ghi đích đang được sửa đổi; điều này báo cho trình biên dịch lưu trữ kết quả trong thanh ghi đó thay vì trong khung ngăn xếp. Điều này cho phép trình biên dịch thực hiện một số tối ưu hóa, bao gồm giảm độ dài tổng thể của lệnh. Việc thêm ràng buộc r buộc trình biên dịch sử dụng một từ đầy đủ cho thanh ghi đích, thường nhanh hơn một giá trị ngay lập tức.