2010-03-09 18 views
8

Heyo,विधानसभा

कॉलेज में मेरी कक्षा हमें विधानसभा में कार्यक्रमों लिख गया है में लेबल का नाम समाप्त होने वाले हैं। मैंने अब तक सी की आसानी की सराहना नहीं की है।

अब, जब मैं विधानसभा में कार्यक्रम, मैं अक्सर बनाने के लिए है, जबकि/के लिए/अगर छोरों और लेबल के साथ सशर्त, जैसे:

SKIP: 
    ... 
COMP:ADD R1, R1, #0 ;Check for equality 
    BRZ WHILEEND 
    ...   ;code inside the while loop 
    JMP COMP  ;Return to while loop 
WHILEEND: 
    ... 

तो, यह है, जबकि पाश (उदाहरण) में मैं 1 लेबल का इस्तेमाल किया है subroutine के लिए और लूप के लिए 2 और खुद के लिए। मैं असेंबली में कर रहे सभी लूप और शाखाओं के लिए अच्छे लेबल नाम से बाहर चला गया हूं, आप लोग इसे विविध और वर्णनात्मक रखने के लिए क्या करते हैं?

उत्तर

11

अधिकांश अस्सेम्ब्लेर्स अनुमति देते हैं स्थानीय लेबल:

routine_1: 
    ... 
.loop: 
    ... 
    jne .loop 

routine_2: 
    ... 
.loop: 
    ... 
    jne .loop 
    ... 
    jmp routine_1.loop 

या गुमनाम लेबल जहां एक ही लेबल नाम और संदर्भ "निकटतम पिछड़े" या "निकटतम आगे" का पुन: उपयोग कर सकते हैं:

routine_1: 
    ... 
@@: 
    ... 
    jne @b 

routine_2: 
    ... 
@@: 
    ... 
    jne @b 

(बी पीछे की ओर)

हैं न अपने कोडांतरक में समर्थित है, मैं तुम्हें सवाल में दिनचर्या के लेबल के साथ सभी स्थानीय लेबल लगा दें सकता है लगता है:

routine_1: 
    ... 
routine_1.loop: 
    ... 
    jne routine_1.loop 
2

कई असेंबलरों में आप एक ही (आमतौर पर संख्यात्मक) नाम के साथ कई लेबल बना सकते हैं। यह सुविधा आपको निकटतम लेबल 1 पर पिछड़े कूदने के लिए निकटतम लेबल 1 या jmp 1b पर आगे बढ़ने के लिए jmp 1f का उपयोग करके अपने loops के लिए लेबल का पुन: उपयोग करने देता है।

+0

कि अच्छा होगा, लेकिन मेरे कोडांतरक एक शुरुआती एक (LC3) ताकि जीता है काम नहीं करता लेकिन मुझे लगता है कि मैं सिर्फ सामान्य नामों का उपयोग कर सकता हूं 'while1' 'wend1' 'if1' ifend2 'आदि आदि ... – user289293

+0

मैं यह पता लगाने की कोशिश कर रहा था कि इन' बी' और 'एफ' प्रत्यय क्या हैं। मैंने ऐसा करने के लिए लगभग एक घंटा बिताया। अंत में, मुझे मेरा जवाब यहां मिला। बहुत बहुत धन्यवाद :) – dirtybit

संबंधित मुद्दे