2009-08-15 35 views
14

Vì vậy, tôi đang học MIPS bằng cách sử dụng trình mô phỏng SPIM và im bị mắc kẹt về vấn đề này.Thêm hai số 64 bit trong Assembly

Tôi muốn thêm hai số 64 bit được lưu trữ trong bốn thanh ghi 32 bit. Vì vậy, tôi thêm các byte LO và sau đó là carry và các byte HI. Nhưng không có lệnh adc/addc, nghĩa là thêm bằng carry.

Vì vậy, tôi sẽ phải thêm bit mang trong thanh ghi trạng thái. Nhưng, làm thế nào chính xác để tôi đọc đăng ký này?

Nếu $ t0 là thanh ghi tạm thời 1, thì tương đương với thanh ghi trạng thái chứa cờ mang theo là gì?

Tôi đã googled rất nhiều Tôi vẫn không thể tìm thấy bất kỳ ví dụ nào thậm chí sử dụng thanh ghi trạng thái.

+0

không có trạng thái hoặc cờ đăng ký trong MIPS –

Trả lời

21

Add $ t2 $ t3 + $ t4 $ t5, dẫn đến $ t0 $ t1

addu $t1, $t3, $t5 # add least significant word 
sltu $t0, $t1, $t5 # set carry-in bit 
addu $t0, $t0, $t2 # add in first most significant word 
addu $t0, $t0, $t4 # add in second most significant word 

Đối với phần thứ hai của câu hỏi của bạn, không có đăng ký hộ. Không có gì cả. Nada.

+0

Cảm ơn. Nó có ý nghĩa tại sao tôi không thể tìm thấy thanh ghi trạng thái :) Câu trả lời của bạn hoạt động hoàn hảo. Có chỗ nào có lời khuyên về mã hóa MIPS tốt hơn không? –

+0

Có rất ít. Đối với tôi, thiền định đối với nguồn nhân lực khác hoặc tìm kiếm một objdump -S hoạt động. Bạn có thể học hỏi từ những dịp hiếm hoi, nơi một trình biên dịch làm điều gì đó đúng, nhưng bạn có thể học nhiều hơn từ những nơi, nơi chúng tạo ra crap hoàn toàn, như thường lệ ;-) http://www.cs.unibo.it/~ solmi/teaching/arch_2002-2003/AssemblyLanguageProgDoc.pdf cũng cung cấp một số mẹo hữu ích. – hirschhornsalz

+0

Giải pháp tuyệt vời. Tôi thích nó khi các giải pháp cho vấn đề rõ ràng (IMHO) là thanh lịch. – Derek

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