2009-06-20 34 views
7

Hướng dẫn này thực hiện chính xác những gì? Tôi biết rằng nó cố gắng sắp xếp dữ liệu với một bội số của một số cụ thể nhưng tại sao bạn cần phải làm điều này? Có một hướng dẫn tương đương trong lắp ráp khác?hướng dẫn 'căn chỉnh' trên MIPS

Trả lời

9

Bạn thường căn chỉnh dữ liệu để có hiệu suất tốt hơn. Đối với hầu hết các bộ vi xử lý, truy cập bộ nhớ có một số hình phạt khi không truy cập các ranh giới byte cụ thể. Đối với các nhà lắp ráp khác, thường có một số loại pseudo-op.align cho việc này. Hầu hết các trình biên dịch cũng sắp xếp cấu trúc dữ liệu của chúng (mặc dù bạn có thể vô hiệu hóa nó cho các mục đích gỡ lỗi).

Đồng thời xem phần này Wikipedia entry.

Lưu ý rằng các hệ thống MIPS không mô phỏng có thể bị đổ vỡ nếu bạn cố gắng truy cập vào các ô nhớ không được ký hiệu (xem herehere).

+0

Cảm ơn bạn đã giải thích thêm về các liên kết bên ngoài! –

0

Nó sắp xếp mọi thứ với sức mạnh thứ n của hai. Nó không phải là một hướng dẫn, một chỉ thị của nó sẽ được dịch sang hướng dẫn

Đối với việc sử dụng của nó, ví exampe:

hướng dẫn mips32 luôn dài 32 bit. Vì vậy, mỗi hướng dẫn nên bắt đầu trên một ranh giới từ. Thêm chỉ thị .align trước khi mã bắt đầu, căn chỉnh mọi thứ thành 32 bit. Điều này có nhiều lợi ích, bao gồm cả nó chỉ mất 1 bộ nhớ truy cập để lấy lệnh, và rằng nó có thể sẽ có lợi trên bộ nhớ cache lệnh.

+0

Làm thế nào để lưu trữ float kép trên stack? Nó cần 8 byte liên kết phải không? –

+0

Có, tăng gấp đôi căn chỉnh với 64 bit – Tom

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