end(3)

الاسم
etext, edata, end - نهاية مقاطع البرنامج

موجز
extern etext;
extern edata;
extern end;

الوصف
عناوين هذه الرموز تشير إلى نهاية مقاطع البرنامج المختلفة:

etext
    هذا هو أول عنوان بعد نهاية مقطع النص (كود البرنامج).

edata
    هذا هو أول عنوان بعد نهاية مقطع البيانات المُهيّأة.

end هذا هو أول عنوان بعد نهاية مقطع البيانات غير المُهيّأة (المعروف أيضًا بمقطع BSS).

المعايير
لا شيء.

التاريخ
رغم أن هذه الرموز وُفّرت منذ زمن طويل على معظم أنظمة UNIX، إلا أنها غير موحدة؛ استخدمها بحذر.

ملاحظات
يجب على البرنامج أن يُصرّح بهذه الرموز صراحةً؛ فهي غير مُعرّفة في أي ملف رأس.

في بعض الأنظمة، تُسبق أسماء هذه الرموز بشرطات سفلية، هكذا: _etext و_edata و_end. هذه الرموز مُعرّفة أيضًا للبرامج المُجمّعة على Linux.

عند بدء تنفيذ البرنامج، سيكون فاصل البرنامج قريبًا من &end (ربما في بداية الصفحة التالية). لكن الفاصل سيتغير عند تخصيص الذاكرة عبر brk(2) أو malloc(3). استخدم sbrk(2) مع معامل صفر لإيجاد القيمة الحالية لفاصل البرنامج.

أمثلة
عند التشغيل، يُنتج البرنامج أدناه مخرجات مثل التالية:

    $ ./a.out
    أول عنوان بعد:
        نص البرنامج (etext)       0x8048568
        البيانات المُهيّأة (edata)   0x804a01c
        البيانات غير المُهيّأة (end)   0x804a024

  مصدر البرنامج
    #include <stdio.h>
    #include <stdlib.h>

    extern char etext, edata, end;  /* يجب أن تكون للرموز نوع ما،
                                       وإلا سيشتكي "gcc -Wall" */

    int
    main(void)
    {
        printf("أول عنوان بعد:\n");
        printf("    نص البرنامج (etext)      %10p\n", &etext);
        printf("    البيانات المُهيّأة (edata)  %10p\n", &edata);
        printf("    البيانات غير المُهيّأة (end)  %10p\n", &end);

        exit(EXIT_SUCCESS);
    }

انظر أيضًا
objdump(1), readelf(1), sbrk(2), elf(5)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.