2009-08-15 22 views
14

में दो 64 बिट नंबर जोड़ना तो मैं स्पिम सिम्युलेटर का उपयोग करके एमआईपीएस सीख रहा हूं और मैं इस समस्या पर फंस गया हूं।असेंबली

मैं दो 64 बिट संख्याओं को जोड़ना चाहता हूं जो चार 32 बिट रजिस्टरों में संग्रहीत हैं। इसलिए मैं LO बाइट्स और फिर कैरी और HI बाइट्स जोड़ता हूं। लेकिन कोई एडीसी/एडीसी कमांड नहीं है यानी वाह के साथ जोड़ें।

तो मुझे स्थिति रजिस्टर में लेयर बिट जोड़ना होगा। लेकिन, मैं इस रजिस्टर को वास्तव में कैसे पढ़ूं?

यदि $ t0 अस्थायी रजिस्टर 1 है, तो स्थिति रजिस्टर के समतुल्य क्या है जिसमें लेयर फ्लैग है?

मैंने बहुत कुछ किया है, मुझे अभी भी कोई उदाहरण नहीं मिल रहा है जो स्टेटस रजिस्टर का भी उपयोग करता है।

+0

एमआईपीएस –

उत्तर

21

जोड़ें $ t2 $ t3 + $ टी -4 $ t5, $ 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 

अपने प्रश्न के दूसरे भाग के लिए में परिणाम है, वहाँ कोई स्थिति रजिस्टर है। बिलकुल भी नहीं। नाडा।

+0

धन्यवाद में कोई स्थिति या झंडा रजिस्टर नहीं है। यह समझ में आता है कि मुझे स्टेटस रजिस्टर क्यों नहीं मिला :) आपका उत्तर पूरी तरह से काम करता है। बेहतर एमआईपीएस कोडिंग पर युक्तियों के साथ कोई जगह है? –

+0

कुछ हैं। मेरे लिए, अन्य लोगों के स्रोत पर ध्यान या objdump -S देखकर काम करता है। आप दुर्लभ अवसरों से सीख सकते हैं, जहां एक कंपाइलर कुछ सही करता है, लेकिन आप उन जगहों से और भी सीख सकते हैं, जहां वे सामान्य रूप से पूर्ण बकवास उत्पन्न करते हैं ;-) http://www.cs.unibo.it/~ सोलमी/शिक्षण/arch_2002-2003/असेंबली भाषाएंProgDoc.pdf कुछ उपयोगी टिप्स भी देती है। – hirschhornsalz

+0

ग्रेट समाधान। मुझे यह पसंद है जब स्पष्ट रूप से दोषपूर्ण (आईएमएचओ) की समस्याएं इस सुरुचिपूर्ण हैं। – Derek

संबंधित मुद्दे