bgtछद्म

bgt

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

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

विवरण

bgt एक ब्रांच है जो तब सक्रिय होती है जब एक मान दूसरे से बड़ा हो। इसका नाम branch if greater than से आया है। नीचे दिया गया निर्देश लेबल पर जंप करता है जब rs1, rs2 से सख्ती से बड़ा हो, उनकी तुलना signed मानों के रूप में करते हुए।

bgt rs1, rs2, label

छह मुख्य RISC-V ब्रांचों में से कोई भी greater-than की जाँच नहीं करती। क्या a, b से बड़ा है, यह वही प्रश्न है जो यह है कि क्या b, a से छोटा है जब operands की अदला-बदली की जाए। bgt एक pseudo-instruction है, और assembler इसे operands को उलटकर blt के रूप में फिर से लिखता है। हार्डवेयर सरल रहता है और तुलना अभी भी उस दिशा में लिखी जा सकती है जो स्वाभाविक रूप से पढ़ी जाती है। अंतर्निहित less-than ब्रांच का वर्णन blt के अंतर्गत किया गया है।

bgt का उपयोग तब करें जब शर्त उस दिशा में स्वाभाविक रूप से पढ़ी जाती हो, उदाहरण के लिए किसी मान के अधिकतम से अधिक हो जाने पर, किसी लंबाई के उसके लिए निर्धारित स्थान से बड़े हो जाने पर, या दो पथों में से बड़े को चुनते समय शाखा छोड़ देना।

RISC-V मैनुअल कहता है कि bgt, bgtu, ble और bleu को operands को blt, bltu, bge और bgeu में उलटकर संश्लेषित किया जा सकता है।

Strictly ही मुख्य शब्द है। bgt तब शाखा नहीं लेता जब दोनों मान बराबर हों। बराबर मानों को भी गिनने के लिए, bge का उपयोग करें, जो greater than or equal पर शाखा लेता है। लूप और जाँचों में off-by-one त्रुटियाँ आमतौर पर इसी अंतर से आती हैं। तुलना signed है। unsigned डेटा के लिए वही अदला-बदली bltu पर लागू होती है।

विस्तृत होता है

blt rs2, rs1, label

असेंबलर इस छद्म-निर्देश को ऊपर सूचीबद्ध वास्तविक निर्देश या निर्देशों से बदल देता है।

उदाहरण

li t0, 5
li t1, 2
bgt t0, t1, done   # 5 > 2, so jump to 'done'