bgezछद्म

bgez

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

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

विवरण

bgez एक शाखा लेता है जब रजिस्टर में मान शून्य या धनात्मक होता है। नाम का अर्थ है ब्रांच इफ ग्रेटर दैन ऑर ईक्वल टू ज़ीरो। नीचे दिया गया रूप तब लेबल किए गए स्थान पर कूदता है जब rs कम से कम शून्य हो, और अन्यथा अगले निर्देश पर गिर जाता है।

bgez rs, label

असेम्बलर इसे एक छद्म-निर्देश मानता है और इसे नीचे दिए गए निर्देश में फिर से लिखता है, जो रजिस्टर की तुलना zero से करता है, वह रजिस्टर जो हमेशा 0 रखता है।

bge rs, zero, label

तुलना साइन्ड है, इसलिए रजिस्टर में मौजूद 32 बिट्स को एक ऐसी संख्या के रूप में पढ़ा जाता है जो ऋणात्मक हो सकती है। शून्य एक मैच के रूप में गिना जाता है, जो bgez को bgtz से अलग करता है। यह bltz का विपरीत है, इसलिए किसी भी मान के लिए दोनों में से ठीक एक शाखा लेता है। दो रजिस्टरों की तुलना के लिए bge देखें।

bgez उस मान के लिए स्वाभाविक परीक्षण है जो ऋणात्मक नहीं होना चाहिए, जैसे कि लंबाई, गणना या इंडेक्स। एक प्रोग्राम जो काउंटर से एक घटाता है और तब तक लूप करता रहता है जब तक काउंटर शून्य से नीचे नहीं चला जाता, लूप के अंत में इसका उपयोग करता है।

addi t0, t0, -1
bgez t0, loop

ऊपर दिया गया लूप घटाव के बाद तब तक दोहराता है जब तक t0 0 या अधिक हो, इसलिए यह t0 के 0 के बराबर होने पर एक बार और चलता है और तब रुक जाता है जब t0 -1 तक पहुँच जाता है।

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

bge rs, zero, label

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

उदाहरण

li t0, 4
bgez t0, done   # t0 >= 0, so jump to 'done'