bleछद्म

ble

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

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

विवरण

ble तब शाखा लेता है जब एक मान दूसरे से कम या उसके बराबर हो। यह नाम branch if less than or equal का संक्षिप्त रूप है। नीचे दिया गया रूप तब लेबल पर कूदता है जब rs1 अधिकतम rs2 हो, एक signed तुलना का उपयोग करते हुए।

ble rs1, rs2, label

ble एक pseudo-instruction है जो operands की अदला-बदली पर निर्भर करता है, जैसे bgt करता है। यह पूछना कि a, b से कम या उसके बराबर है, यह पूछने के बराबर है कि b, a से अधिक या उसके बराबर है, इसलिए assembler ble को operands को उलटकर bge के रूप में फिर से लिखता है। किसी समर्पित machine instruction की आवश्यकता नहीं है। अंतर्निहित शाखा के लिए bge देखें।

ble उन loops और ranges के लिए उपयुक्त है जिनमें उनका endpoint शामिल होता है। एक loop जो तब तक चलता है जब तक counter अधिकतम n हो, n सहित, ble के साथ स्पष्ट रूप से पढ़ा जाता है। strict blt के साथ वही loop n plus one मांगता है। Range checks इसे अन्य शाखाओं के साथ उपयोग करते हैं। यदि कोई मान न्यूनतम से नीचे है तो शाखा ले लें, यदि वह अधिकतम से ऊपर है तो शाखा ले लें, और जो बचता है वह पास हो गया है।

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

समान मान ble के साथ शाखा लेते हैं, जो इसे समान operands पर bgt का विपरीत बनाता है। किसी भी जोड़ी के लिए, उनमें से एक शाखा लेता है। तुलना signed है, इसलिए मान ऋणात्मक हो सकते हैं। blt, bge, bgt और ble मिलकर सभी चार signed ordering दिशाएँ देते हैं।

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

bge rs2, rs1, label

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

उदाहरण

li t0, 2
li t1, 5
ble t0, t1, done   # 2 <= 5, so jump to 'done'