2009-12-29 16 views
10

जब मैं एमआईपीएस में हस्ताक्षरित पूर्णांक पर काम करने का प्रयास करता हूं, तो मैं जो भी ऑपरेशन करता हूं उसका परिणाम हस्ताक्षरित रहता है (यानी, पूर्णांक 2 के पूरक में हैं), भले ही मैं जो भी ऑपरेशन करता हूं वह एक हस्ताक्षरित है: addu, multu और इसलिए चौथा ...हस्ताक्षरित संख्याओं पर एमआईपीएस संचालन क्यों हस्ताक्षरित परिणाम देते हैं?

जब मैं [2^31, 2^32 - 1] श्रेणी में संख्याओं को मुद्रित करता हूं तो मुझे उनके 'अतिप्रवाह' नकारात्मक मान मिलते हैं जैसे कि वे हस्ताक्षरित थे (मुझे लगता है कि वे हैं)।

हालांकि, जब मैं कुछ इस तरह का प्रयास करें:

li $v0, 1 
li $a0, 2147483648    # or any bigger number 
syscall 

मुद्रित संख्या हमेशा 2147483647 (2^31 - 1)

मैं उलझन में हूँ ... मैं क्या याद आ रही है?

पीएस: मैंने अपना कोड शामिल नहीं किया है क्योंकि यह बहुत पठनीय नहीं है (जैसे असेंबली कोड) और इस समस्या को दूर करने के लिए, ठीक काम कर रहा है। अगर किसी को लगता है कि यह आवश्यक है तो मैं इसे तुरंत शामिल कर दूंगा!

उत्तर

14

Wikipedia से:

MIPS32 निर्देश सेट कहा गया है कि शब्द जोड़ें के हिस्से के रूप अहस्ताक्षरित और निर्देश घटाएँ, एक मिथ्या नाम है। आदेशों के हस्ताक्षरित और हस्ताक्षरित संस्करणों के बीच का अंतर ऑपरेटरों के साइन एक्सटेंशन (या इसकी कमी) नहीं है, लेकिन यह नियंत्रित करता है कि ओवरफ्लो (जैसे जोड़ें) पर एक जाल निष्पादित किया गया है या ओवरफ़्लो को अनदेखा किया गया है (हस्ताक्षर जोड़ें)। इन निर्देशों के लिए एक तत्काल ऑपरेंड कॉन्स्ट हमेशा साइन-विस्तारित होता है।

MIPS Instruction Reference से:

सभी गणित तत्काल मान साइन-बढ़ा रहे हैं [...] पर हस्ताक्षर किए और अहस्ताक्षरित निर्देश के बीच फर्क सिर्फ इतना है कि हस्ताक्षर किए निर्देश एक अतिप्रवाह अपवाद उत्पन्न कर सकते हैं और अहस्ताक्षरित निर्देश कर सकते है नहीं।

+0

मैं उत्तर के लिए नेट पर देख रहा था ... कहीं भी लेकिन स्पष्ट। धन्यवाद! – dankilman

+0

फिर वे "चेक और अनचेक" जैसी चीज़ों के बजाय "हस्ताक्षरित और हस्ताक्षरित" शब्दावली का उपयोग क्यों करते हैं? – dan04

+0

यह एक गलत नाम है। पहला उद्धरण पढ़ें। –

1

ऐसा लगता है कि वास्तविक समस्या सिस्कोल है जिसे आप प्रिंट संख्याओं के लिए उपयोग कर रहे हैं। यह प्रतीत होता है कि आप जो भी हस्ताक्षर करते हैं, और संभवतया बाध्य होने के लिए हमेशा की व्याख्या करते हैं।

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