Skip to content

RFC: تخزين ساكن مسمّى + سمات التخزين (@رمز/@متطاير/@محزوم/بايتات) — اللبنة 3.14 - #39

Open
SalehKadah wants to merge 1 commit into
mainfrom
rfc/named-static-storage
Open

RFC: تخزين ساكن مسمّى + سمات التخزين (@رمز/@متطاير/@محزوم/بايتات) — اللبنة 3.14#39
SalehKadah wants to merge 1 commit into
mainfrom
rfc/named-static-storage

Conversation

@SalehKadah

Copy link
Copy Markdown
Contributor

ملخّص

تمكين ص من تعريف مخزن ساكن مسمّى برمز رابط مستقرّ ومُصدَّر في .bss/.rodata،
مع 4 بدائيّات متلازمة: @رمز("اسم") (رمز مُصدَّر)، إصلاح @متطاير على التصريح
(مكسور حاليًّا)، @محزوم (رصّ)، وحرفيّة بايتات(...) (كتلة .rodata).

السياق

اللبنة 3.14 من إطفاء C، تكمّل عنوان_رمز (3.13، PR #224). بعد أن صارت ص تأخذ
عنوان الرمز، هذا المقترح يجعلها تعرّف المخزن نفسه — فتُملّك النواةَ عدّاداتها
(bee_probe_hits…) وخريطتها البتّيّة وأرشيفها بدل مخازن C.

غرض كلّ بدائيّة

  • @رمز("bee_x") — الرافعة الأمّ: رمز مُصدَّر ثابت يلتقي عليه أكعاب المقاطعة
    (C) + عنوان_رمز + عقد ABI. بدونه المخزن باسم داخليّ مُشوَّه لا يصلح أرضيّةً مشتركة.
  • @متطاير (إصلاح) — صحّة: العدّادات يكتبها سياق مقاطعة ويقرؤها فحص في حلقة؛
    بلا volatile يُخبّئ المُحسِّن القراءة ⇒ حلقة أبديّة. العلم يُسقَط اليوم في
    statement_advanced.cpp:159.
  • @محزوم — مفتاح ترحيل الواصفات: تخطيط IDTR/GDTR/البوّابات يفرضه المعالج؛
    بلا رصّ يحشو المترجم ⇒ عطل. isPacked مقيَّد false حاليًّا.
  • بايتات(...) — جداول .rodata مملوكة: أرشيف SFA1 وخريطة set-1 كثابت حقيقيّ
    برمز مستقرّ، لا مصفوفة كومة.

النموذج القائم (من الاستكشاف)

ص تملك globals حقيقيّة (top-level متغيرGlobalVariable في .bss/.rodata)
والبنية التحتيّة للأقسام (LLVMCustomSections, setSection) وتمثيل ConstantDataArray
— لكنّها يتيمة/داخليّة بلا واجهة لغويّة مستقرّة. المقترح يصل هذه البنية بصياغة.

النطاق

الأربع بدائيّات كاملةً (الخيار الأقوى): حذف أيٍّ منها يُبقي صنفًا كاملًا من مخازن C.
@قسم(".name") الصريح والـstatics المحلّيّة والتهيئة الثابتة المحسوبة — مؤجَّلة.

أسئلة للنقاش

  1. صياغة بايتات: مدمج بايتات(...) أم مصفوفة ثابتة مكتوبة.
  2. هل يُفصَل @محزوم (أضعفها ترابطًا) أم يبقى ضمن الحزمة.
  3. @رمز على المستوى الأعلى فقط أم يشمل statics محلّيّة.

🤖 Generated with Claude Code

…ضمَّنة

اللبنة 3.14 من إطفاء C. تمكّن ص من تعريف مخزن ساكن مسمّى برمز رابط مستقرّ مُصدَّر
في .bss/.rodata مع سمات: @رمز("اسم") رمز مُصدَّر، إصلاح @متطاير على التصريح،
@محزوم رصّ، وحرفيّة بايتات(...) كتلة .rodata. يكمّل عنوان_رمز (3.13): ص تعرّف
المخزن وتأخذ عنوانه بالاسم نفسه ⇒ تُملّك النواة عدّاداتها/خريطتها/أرشيفها بدل C.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant