Để xem làm thế nào sự thuyết pháp làm việc, chúng ta hãy bắt đầu với một ví dụ đơn giản của
hình. 5-48, trong đó cho thấy điều kiện thực hiện, tiền thân của sự thuyết pháp. Trong
hình. 5-48 (a) chúng ta thấy một câu lệnh if. Trong hình. 5-48 (b), chúng tôi xem bản dịch của thành ba
hướng dẫn:. So sánh, một chi nhánh có điều kiện, và một hướng dẫn di chuyển
nếu (R1 == 0) CMP R1,0 CMOVZ R2, R3, R1
R2 = R3; BNE L1
MOV R2, R3
L1:
(a) (b) (c)
Hình 5-48. (a) Một câu lệnh if. (b) lắp ráp mã chung cho (a). (c) Một hướng dẫn điều kiện.
Trong hình. 5-48 (c) chúng ta thoát khỏi các chi nhánh có điều kiện bằng cách sử dụng một lệnh mới,
CMOVZ, đó là một động thái có điều kiện. Những gì nó là kiểm tra xem nếu đăng ký thứ ba, R1, là 0. Nếu vậy, nó sao chép R3 R2. Nếu không, nó không làm gì.
Một khi chúng ta có một hướng dẫn mà có thể sao chép dữ liệu khi một số đăng ký là 0, nó là một
bước nhỏ tới một chỉ dẫn có thể sao chép dữ liệu khi một số đăng ký không phải là 0, nói
CMOVN. Với cả hai hướng dẫn có sẵn, chúng tôi đang trên đường đến điều kiện thực hiện đầy đủ. Hãy tưởng tượng một tuyên bố nếu với một số bài tập trong đó một phần
và một số nhiệm vụ khác ở phần khác. Toàn bộ tuyên bố có thể được dịch sang mã để thiết lập một số đăng ký là 0 nếu điều kiện là sai và đến một
giá trị nếu nó là sự thật. Sau khi thiết lập đăng ký, sau đó phân công một phần có thể được
biên dịch thành một chuỗi các hướng dẫn CMOVN và khác bài tập phần vào
một chuỗi các hướng dẫn CMOVZ.
Tất cả các hướng dẫn, các thiết lập đăng ký, các CMOVNs, và CMOVZs tạo thành
một khối cơ bản đơn không có chi nhánh có điều kiện. Các hướng dẫn thậm chí có thể được
sắp xếp lại, hoặc là bởi trình biên dịch (bao gồm cả bộ phận nâng hàng các bài tập trước khi
kiểm tra) hoặc trong quá trình thực hiện. Việc nắm bắt duy nhất là tình trạng này đã được biết đến bởi
thời gian hướng dẫn điều kiện phải được nghỉ hưu (gần cuối của
đường ống). Một ví dụ đơn giản cho thấy một sau đó một phần và một phần khác được đưa ra trong
hình. 5-49.
Mặc dù chúng tôi đã trình bày ở đây chỉ đơn giản hướng dẫn điều kiện (lấy
từ IA-32 ISA, trên thực tế), trên IA-64 tất cả các hướng dẫn được xác. Những gì
này có nghĩa là việc thực hiện của mỗi lệnh có thể được thực hiện có điều kiện. Việc
thêm lĩnh vực 6-bit gọi Lựa chọn trước đó một trong 64 thanh ghi vị ngữ 1-bit. Như vậy
một câu lệnh if sẽ được biên dịch thành mã mà đặt một trong các thanh ghi vị đến
1 nếu điều kiện là đúng sự thật và là 0 nếu nó là sai. Đồng thời và tự động, nó
đặt một đăng ký vị với giá trị nghịch đảo. Sử dụng sự thuyết pháp, máy
hướng dẫn hình thành các điều khoản sau đó và người khác sẽ được sáp nhập vào một dòng duy nhất
của hướng dẫn, những người trước đây sử dụng làm vị và những người sau này sử dụng của nó
ngược. Khi điều khiển đi ở đó, chỉ có một tập các lệnh sẽ được thực thi
đang được dịch, vui lòng đợi..