slt

slt

RISC-V असेंबली संदर्भ

lyszt.net slt और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।

एन्कोडिंग प्रारूप

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

विवरण

slt दो संख्याओं की तुलना करता है और परिणाम को 1 या 0 के रूप में संग्रहीत करता है। इसका नाम set less than से आया है। नीचे दिया गया रूप परीक्षण करता है कि rs1, rs2 से कम है या नहीं। यदि परीक्षण सफल होता है, तो निर्देश गंतव्य रजिस्टर rd में 1 लिखता है। यदि यह विफल होता है, तो यह 0 लिखता है।

slt rd, rs1, rs2

तुलना का उपयोग दो तरीकों से किया जा सकता है। एक ब्रांच निर्देश इसके आधार पर कूदता है। वैकल्पिक रूप से, हाँ या नहीं के उत्तर को एक संख्या के रूप में संग्रहीत किया जा सकता है, सत्य के लिए 1 और असत्य के लिए 0, और बाद में उपयोग किया जा सकता है। slt संग्रहण करता है। असेंबली सत्य और असत्य को संग्रहीत 1 या 0 से दर्शाती है, और उस मान को किसी भी अन्य संख्या की तरह जोड़ा, मास्क या संयोजित किया जा सकता है।

तुलना मानों को signed मानती है, इसलिए वे ऋणात्मक हो सकते हैं, और -1 को 0 से कम गिना जाता है। संबंधित निर्देश sltu उन्हें unsigned मानता है, जो बड़े मानों और ऋणात्मक दिखने वाले मानों के लिए उत्तर बदल देता है।

RISC-V मैनुअल slt और sltu को signed और unsigned तुलना के रूप में वर्णित करता है जो rd में 1 लिखते हैं यदि rs1, rs2 से कम है और अन्यथा 0। यह सामान्य signed जोड़ के लिए overflow जाँच में भी slt का उपयोग करता है। जोड़ के बाद, नीचे की दूसरी पंक्ति दर्ज करती है कि दूसरा ऑपरेंड ऋणात्मक है या नहीं, तीसरी पंक्ति दर्ज करती है कि योग पहले ऑपरेंड से कम है या नहीं, और अंतिम पंक्ति तब कूदती है जब दोनों उत्तर भिन्न हों।

add t0, t1, t2
slti t3, t2, 0
slt t4, t0, t1
bne t3, t4, overflow

तर्क यह है कि योग एक ऑपरेंड से केवल तभी कम होना चाहिए जब दूसरा ऑपरेंड ऋणात्मक हो।

कोई set greater than निर्देश नहीं है। यह परीक्षण करने के लिए कि a, b से बड़ा है या नहीं, ऑपरेंड बदलें और पूछें कि b, a से कम है या नहीं। उदाहरण 3 और 9 की तुलना करता है। चूँकि 3, 9 से कम है, t2 को 1 पर सेट किया जाता है।

उदाहरण

li t0, 3
li t1, 9
slt t2, t0, t1   # t2 = 1