sltu
lyszt.net sltu और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।
एन्कोडिंग प्रारूप
विवरण
sltu slt की तरह गंतव्य रजिस्टर को 1 या 0 पर सेट करता है, और यह दो संख्याओं की तुलना अहस्ताक्षरित मानों के रूप में करता है। नाम का अर्थ है सेट लेस दैन, अनसाइन्ड। slt पृष्ठ तुलना परिणाम को 1 या 0 के रूप में संग्रहीत करने को कवर करता है।
वही 32 बिट्स एक हस्ताक्षरित संख्या के रूप में पढ़े जा सकते हैं, जिसमें शीर्ष बिट ऋणात्मकता दर्शाता है और सीमा लगभग -2 अरब से +2 अरब तक होती है, या एक अहस्ताक्षरित संख्या के रूप में, जिसमें कोई ऋणात्मक मान नहीं होता और सीमा 0 से लगभग 4 अरब तक होती है। slt हस्ताक्षरित मान पढ़ता है और sltu अहस्ताक्षरित मान पढ़ता है। सभी बिट्स 1 पर सेट वाला रजिस्टर slt के लिए -1 है और sltu के लिए सबसे बड़ा संभव मान है, इसलिए दोनों निर्देश समान इनपुट पर असहमत हो सकते हैं।
sltu का उपयोग उन मात्राओं के लिए करें जो ऋणात्मक नहीं हो सकतीं, जैसे मेमोरी पते, आकार, गणनाएँ और स्थितियाँ। दो मेमोरी पतों की हस्ताक्षरित slt से तुलना करने पर गलत परिणाम मिलता है जब कोई पता इतना बड़ा हो जाता है कि उसका शीर्ष बिट सेट हो जाए, क्योंकि हस्ताक्षरित पठन उसे ऋणात्मक मानता है।
RISC-V मैनुअल slt और sltu को एक साथ हस्ताक्षरित और अहस्ताक्षरित तुलनाओं के रूप में वर्णित करता है जो rd में 1 लिखते हैं यदि rs1, rs2 से कम है और अन्यथा 0। यह नीचे दी गई पंक्ति को गैर-शून्य के परीक्षण के तरीके के रूप में देता है, जो snez छद्म-निर्देश है।
sltu rd, x0, rs2
sltu का रूप नीचे दिखाया गया है।
sltu rd, rs1, rs2
नीचे दिए गए विशेष मामले में, rd तब 1 हो जाता है जब rs शून्य के अलावा कुछ भी हो, क्योंकि 0 हर अन्य अहस्ताक्षरित मान से कम है। यह किसी भी संख्या को 1 या 0 तक घटा देता है।
sltu rd, zero, rs
उदाहरण
li t0, -1 li t1, 1 sltu t2, t0, t1 # t2 = 0 (t0 read as unsigned is huge)
