هڪ ريڊ هٽ ملازم گولز اسيمبلي سسٽم پيش ڪيو. GNU ميڪ 4.2 جو ڇڏڻ

رچرڊ WM جونز، ليکڪ لبياسٽسRed Hat تي ڪم ڪرڻ، متعارف ڪرايو نئين تعمير جي افاديت مقصدجنهن جو مقصد ميڪ اپ جي افاديت ۾ نقص ۽ مسئلن کي ختم ڪرڻ آهي جڏهن ته اسڪرپٽس جي مجموعي سادگي ۽ سمجھ کي برقرار رکڻ. ميڪ يوٽيلٽي 1976 ۾ ٺهيل هئي ۽ ان ۾ ڪيتريون ئي تصوراتي خاميون آهن، انهن خامين کي ختم ڪرڻ لاءِ عام تصور کي تبديل ڪرڻ کان سواءِ.
مقصدن جو ذريعو ڪوڊ طرفان ورهايل GPLv2+ جي تحت لائسنس يافته.

مسئلا حل ٿيڻ گهرجن:

  • صرف هڪ انحصار حل جي حڪمت عملي لاءِ سپورٽ - "اسمبلي جي هدايت هلائي ويندي آهي جيڪڏهن ٽارگيٽ فائل غائب آهي يا انحصار مان هڪ کان پراڻي آهي." مقصد ٻين حڪمت عملين تي عمل ڪرڻ جو منصوبو آهي، جهڙوڪ URL جي موجودگي جي جانچ ڪرڻ، ڪنهن به فائل سان ترميمي وقت جو مقابلو ڪرڻ، پيڪيج جي تعمير جو جائزو وٺڻ ڪوجي, چيڪسم جي مقابلي ۾، هلندڙ ٽيسٽ ڪيسن کي ٽيسٽ جي چونڊيل ڇڏڻ سان.
  • جڏهن ٺاھڻ جي هدفن کي پروسيس ڪندي، ٺاھيو فائلن ۽ قاعدن جي نالن کي الڳ نه ڪندو آھي، ۽ نتيجي طور، ڪو به چيڪ نه آھي ته جڏھن ھڪڙي قاعدي کي ھلايو ويندو آھي، فائل ان کي ٺاھڻ جو دعوي ڪري ٿو اصل ۾ ٺاھيو ويندو. مثال طور، جيڪڏهن توهان وٽ "ٽيسٽ" نالي هڪ قاعدو آهي جيڪو ٽيسٽ سان اسڪرپٽ هلندو آهي، "ٽيسٽ" نالي هڪ فائل اتفاقي طور تي ٺاهي وئي آهي، پوء ٽيسٽ کي وڌيڪ نه سڏيو ويندو، ڇاڪاڻ ته make اهو غور ڪندو ته ٽارگيٽ ٺهيل آهي ۽ ضرورت ناهي. ڪو به عمل (مکي ۾ مسئلي جي چوڌاري ڪم ڪرڻ لاء، توهان وضاحت ڪري سگھو ٿا ". فوني: ٽيسٽ" هدايتون). مقصد واضح طور تي فائلن ۽ قاعدن جا نالا الڳ ڪري ٿو.

    هڪ ريڊ هٽ ملازم گولز اسيمبلي سسٽم پيش ڪيو. GNU ميڪ 4.2 جو ڇڏڻ

  • اسيمبلي جي هدايتن لاء صرف هڪ پيٽرولر مهيا ڪرڻ سان مسئلو.

    هڪ ريڊ هٽ ملازم گولز اسيمبلي سسٽم پيش ڪيو. GNU ميڪ 4.2 جو ڇڏڻ

    ھدف توھان کي اجازت ڏئي ٿو استعمال ڪرڻ لاءِ ھڪ صوابديدي نمبر جو نامزد ٿيل پيٽرولر. مثال طور، توھان الڳ ڪري سگھوٿا ھڪڙي ڊيبگ فائل جي نشاني کي نالي مان:

    هڪ ريڊ هٽ ملازم گولز اسيمبلي سسٽم پيش ڪيو. GNU ميڪ 4.2 جو ڇڏڻ

  • شيل مترجم سان لهه وچڙ ۾ مسئلا. مثال طور، فائل ۽ ڊاريڪٽري جي نالن ۾ اسپيس جي فرار کي ڪنٽرول ڪرڻ جي ضرورت، هر ڪمانڊ تي عمل ڪرڻ دوران هڪ الڳ شيل مترجم شروع ڪرڻ تي وسيلن جو ضايع، "$" ڪردار جي ٻٽي تشريح (ٻنهي شيل ۽ ميڪ ۾ استعمال ٿيل)، حساب ڪتاب ۾ رکڻ.

    اهي مسئلا گولز ۾ حل ڪيا ويا آهن "%" علامت استعمال ڪندي "$" جي بدران اسيمبلي جي متغيرن لاءِ ("$" صرف شيل لاءِ رهي ٿو) ، هڪ parser استعمال ڪندي. LALR (1)، جنهن لاءِ توهان کي ضرورت آهي ته رستن ۽ فائلن جا نالا حوالن سان ۽ نمايان ڪوڊ بلاڪن کي گھمڻ واري ڪنگڻ سان. سڄو ڪمانڊ بلاڪ ڪمانڊ شيل جي ھڪڙي مثال ۾ شروع ڪيو ويو آھي، ۽ بلاڪ جي اندر، صوابديدي ڪوڊ فارميٽنگ جي اجازت آھي، خاص اسپيس جي حوالي کان سواء.

    هو:
    ھدف: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    اهو ٿيو:
    "target": "foo.o"، "bar.o" {
    %CC %CFLAGS %< -o %@
    }

مقصدن جون ٻيون خاصيتون:

  • صوابديدي نالن ۽ پيٽرولن جي وضاحت لاءِ اختياري مدد:

    گول سڀ = : "هدف"

    گول لنڪ =
    "target" : "foo.o"، "bar.o" { ... }

    گول گڏ ڪرڻ (نالو) =
    "%name.o" : "%name.c"، "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • ٻه لانچ موڊ: فائلن جي نالن سان ٺاھڻ واري هدفن کي ملائڻ لاءِ موڊ ٺاھيو (مثال طور، فائل "foo.o" ھدف "%name.o" سان ملائي ٿي)، ۽ سڌو ڪمپليشن موڊ:

    گول سڀ = : لنڪ

    گول لنڪ =
    "target" : "foo.o"، مرتب ڪريو ("bar") { ... }

    گول گڏ ڪرڻ (نالو) =
    "%name.o" : "%name.c"، "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • اسيمبلي جي حڪمت عملي خاص ضابطن جي ذريعي طئي ڪئي وئي آهي جيڪي استعمال ڪري سگهجن ٿيون اسيمبلي جي ٽارگيٽ کي ٻيهر گڏ ڪرڻ جي ضرورت کي طئي ڪرڻ لاء. جيڪڏھن ھڪڙي لنڪ ھڪڙي فائل جي موجودگي سان ٺاھيو ويو آھي، پوء اھو واضح طور تي لاڳاپيل نشاني ذريعي طئي ڪيو ويو آھي ("ھدف" قاعدي جي نالي لاء ۽ * فائل ("ھدف") فائل چيڪ ڪرڻ لاء).

    "target" : "foo.o"، "bar.o" { ... }

    *فائل("ٽارگٽ"): *فائل("foo.o")، *فائل("bar.o") { ... }

  • ڊولپر اسيمبلي جي حڪمت عملي جي خودمختاري خاصيتن جي وضاحت ڪري سگهي ٿو. "*فائل" جھنڊو ڊفالٽ طور بيان ڪيو ويو آھي (@{...} اشارو ڪري ٿو ٻاھر نڪرڻ جي دٻاءُ، ۽ "exit 99" اشارو ڏئي ٿو ٻيهر تعمير جي ضرورت):

    حڪمت *فائل (فائل جو نالو) = @{
    test -f %filename || نڪرڻ 99
    f لاءِ٪ ۾

    جو ذريعو: opennet.ru

تبصرو شامل ڪريو