Hướng dẫn chi nhánh
Tất cả các bộ vi xử lý ARM hỗ trợ một lệnh rẽ nhánh cho phép một tiền đạo chi nhánh có điều kiện hoặc ngược lên đến 32MB. Khi máy tính là một trong những thanh ghi mục đích chung (R15), một chi nhánh hoặc nhảy cũng có thể được tạo ra bằng cách viết một giá trị cho R15.
A gọi chương trình con có thể được thực hiện bởi một biến thể của các hướng dẫn tiêu chuẩn ngành. Cũng như cho phép một chi nhánh về phía trước hoặc phía sau, lên đến 32MB, Chi nhánh với Link (BL) hướng dẫn bảo tồn các địa chỉ của lệnh sau khi các chi nhánh (địa chỉ trở về) trong LR (R14).
Trong T biến thể của ARMv4 và ở trên, Chi nhánh và Exchange (BX) hướng dẫn các bản sao nội dung của một mục đích chung đăng ký Rm cho PC (giống như một PC MOV, hướng Rm), với các chức năng bổ sung nếu bit [0] giá trị chuyển nhượng là 1, bộ vi xử lý chuyển sang Thumb® nhà nước. Cùng với các hướng dẫn Thumb tương ứng, điều này cho phép ảnh hưởng lẫn nhau, ngành giữa ARM và mã Thumb.
Interworking cuộc gọi chương trình con có thể được tạo ra bằng cách kết hợp BX với một chỉ dẫn để viết một địa chỉ trả lại phù hợp với LR, như một MOV LR ngay trước, hướng PC.
Trong ARMv5 và ở trên, cũng có hai loại chi nhánh với Link và Exchange (BLX) hướng dẫn: • Một loại có một Rm đăng ký toán hạng, như hướng dẫn BX. Lệnh này hoạt động như một hướng dẫn BX, và thêm vào đó viết địa chỉ của lệnh tiếp theo vào LR. Điều này cung cấp một cuộc gọi liên mạng chương trình con có hiệu quả hơn là một chuỗi của MOV LR, PC tiếp theo BX Rm. • Các loại khác cư xử giống như một hướng dẫn BL, phân nhánh hoặc lùi lại lên đến 32MB và viết một liên kết trở lại với LR, nhưng ca trạng thái Thumb hơn là ở trong trạng thái ARM như BL nào. Đây là một lựa chọn hiệu quả hơn để tải các địa chỉ chương trình con vào Rm theo sau là một hướng dẫn BLX Rm khi nó được biết rằng một chương trình con Thumb đang được kêu gọi và rằng các chương trình con nằm trong khoảng 32MB. Một hướng dẫn tải cung cấp một cách để chi nhánh bất cứ nơi nào trong không gian địa chỉ 4GB (được biết đến như một cành cây dài). Một giá trị 32-bit được nạp trực tiếp từ bộ nhớ vào máy tính, gây ra một chi nhánh. Một cành cây dài có thể được bắt đầu bằng MOV LR, tính hoặc một hướng dẫn mà viết LR để tạo ra một chương trình con gọi dài. Trong ARMv5 và ở trên, bit [0] của các giá trị nạp bởi một điều khiển cành cây dài cho dù các chương trình con được thực hiện trong trạng thái ARM hay trạng thái Thumb, giống như bit [0] giá trị chuyển đến máy tính bằng một lệnh BX. Trước ARMv5, bit [1: 0]. Các giá trị nạp vào PC được bỏ qua, và một tải vào máy tính chỉ có thể được sử dụng để gọi một chương trình con trong trạng thái ARM Trong không-T biến thể của ARMv5, các hướng dẫn mô tả ở trên có thể gây ra một mục nhập vào trạng thái Thumb mặc dù thực tế rằng các tập lệnh Thumb là không có mặt. Điều này gây ra các hướng dẫn tại các mục tiêu chi nhánh để vào Instruction ngoại lệ xác định. Xem Các bit vô hiệu hóa ngắt trên trang A2-14 để biết thêm chi tiết. Trong ARMv6 và ở trên, và trong các biến thể của J ARMv5, có một chi nhánh bổ sung và hướng dẫn giao dịch Jazelle®, xem BXJ trên trang A4-21.
đang được dịch, vui lòng đợi..