2010-04-07 15 views
5

मैं यहां कुछ एमआईपीएस सीखने की कोशिश करते समय थोड़ा मिनी कंपाइलर पर काम कर रहा हूं।एमआईपीएस (या एसपीआईएम): फ्लोटिंग पॉइंट नंबर लोड हो रहा है

MIPS एक निर्देश ली (लोड तत्काल) जो इस

li $5,100 

तरह काम करेंगे जो रजिस्टर में 100 लोड होगा 5.

हालांकि, मैं रजिस्टरों में तैरता लोड करने के लिए की जरूरत है: यहाँ मेरी मुद्दा है अभी और मैं इसे करने का एक तरीका ढूंढने के साथ संघर्ष कर रहा हूं ... चूंकि ली $ 5,2.5 काम नहीं करता है।

किसी के पास कोई सलाह है?

मैं सी में काम कर रहा हूं, मैं सोच रहा था कि मैं किसी भी तरह से फ्लोट का पूर्णांक प्रतिनिधित्व प्राप्त कर सकता हूं जिसके साथ मैं काम कर रहा हूं (यानी फ्लोट बाइनरी प्रतिनिधित्व == इनट बाइनरी प्रस्तुति) तो रजिस्टर में "पूर्णांक" लोड करें और तब से एक फ्लोट की तरह इसका इलाज करें।

शायद यह बहुत देर हो चुकी है लेकिन मैं अभी अटक गया हूं।

उत्तर

9

आपको अपनी फ्लोट लोड करने के लिए फ़्लोटिंग पॉइंट रजिस्टरों का उपयोग करने की आवश्यकता होगी।

बजाय

:

li $5,2.5 

प्रयास करें:

li.s $f5,2.5 

पूर्णांक और चल बिन्दु रजिस्टरों के बीच ले जाने के लिए mfc1 और mtc1 निर्देश पर एक नजर डालें।

+0

धन्यवाद, यह चाल है। अगर मुझे याद आया तो मुझे शायद घास पर मारा जाना चाहिए। तुम्हारी रात अच्छी बीते। – James

+3

यह एक छद्म निर्देश है। मैं वास्तव में इसे करने के बारे में कैसे जाना होगा? (एमएआरएस li.s का समर्थन नहीं करता है)। केवल एक चीज जिसे मैं सोच सकता हूं वह है 25 को $ t0 में लोड करना, $ 10 में $ 1 लोड करना, प्रत्येक को फ़्लोट करने के लिए परिवर्तित करें, और फिर विभाजित करें। –

11

मार्स में कोई निर्देश/छद्म निर्देश नहीं दिखता है जो फ़्लोटिंग पॉइंट्स को तत्काल मूल्यों को फ़्लोटिंग रजिस्टरों में लोड करता है। इसके बजाए, आपको फ्लोटिंग पॉइंट वैल्यू को मेमोरी में रखना होगा और रजिस्टर को मेमोरी से लोड करना होगा:

.data 
fp1: .double 2.5 
fp2: .double -0.75 

.text 
l.d $f0, fp1 
l.d $f2, fp2 
संबंधित मुद्दे