slti

slti

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

lyszt.net slti और अन्य 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

विवरण

slti एक रजिस्टर की तुलना एक स्थिरांक से करता है और गंतव्य में 1 या 0 लिखता है। यह slt है, जो दो रजिस्टरों की तुलना करता है और परिणाम को एक संख्या के रूप में संग्रहीत करता है (वह पृष्ठ देखें), जिसमें दूसरा मान एक इमीडिएट के रूप में प्रदान किया जाता है। एक इमीडिएट एक स्थिरांक है जो निर्देश में एन्कोड किया गया है, और नाम में i इसे दर्शाता है।

slti का रूप नीचे दिखाया गया है। जब rs1 में मान स्थिरांक imm से कम होता है, तो rd को 1 प्राप्त होता है, अन्यथा 0।

slti rd, rs1, imm

तुलना साइन्ड है, इसलिए रजिस्टर और स्थिरांक दोनों को ऐसी संख्याओं के रूप में पढ़ा जाता है जो ऋणात्मक हो सकती हैं।

इसका उपयोग किसी चर की तुलना पहले से ज्ञात निश्चित थ्रेशोल्ड से करने के लिए करें। यह जाँचना कि कोई इंडेक्स 10 से नीचे है या कोई मान किसी सीमा से नीचे गिर गया है, एक slti लेता है। अगली पंक्ति पूछती है कि क्या t0 शून्य से कम है, जो ऋणात्मक मान की जाँच करती है और ऋणात्मक मानों के लिए t1 को 1 और अन्यथा 0 पर सेट करती है।

slti t1, t0, 0

RISC-V मैनुअल कहता है कि slti rd में 1 रखता है यदि rs1 साइन-एक्सटेंडेड इमीडिएट से कम है जब दोनों को साइन्ड संख्याओं के रूप में माना जाता है, और अन्यथा 0। सामान्य साइन्ड जोड़ के लिए ओवरफ़्लो जाँच इसका उपयोग करती है, जैसा कि slt पृष्ठ पर दिखाया गया है, यह रिकॉर्ड करने के लिए कि कोई ऑपरेंड ऋणात्मक है या नहीं।

स्थिरांक -2048 से 2047 तक होता है। किसी बड़े मान से तुलना करने के लिए, स्थिरांक को li के साथ एक रजिस्टर में लोड करें और slt का उपयोग करें। असेंबलर एक सीमा से बाहर के स्थिरांक को एक त्रुटि संदेश के साथ अस्वीकार कर देता है।

उदाहरण

li t0, 3
slti t1, t0, 5   # t1 = 1 (3 < 5)