Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Assembly Playground

اكتب الأكواد البرمجية، شغّلها وشاركها - بدون أي إعداد.

Coddymain.asm
Output
Click Run to see the output here.

شغّل Assembly عبر الإنترنت في متصفحك

هذا مترجم Assembly مجاني عبر الإنترنت لكود x86-64 المكتوب بصيغة NASM. اكتب برنامجك واضغط على تشغيل، فيقوم Coddy بتجميعه باستخدام nasm -f elf64، وربطه باستخدام ld، وتشغيل ملف Linux التنفيذي الناتج على الخادم، ثم يعرض لك stdout و stderr وحالة الخروج. لا يوجد ما يُثبَّت: لا NASM، ولا رابط، ولا آلة افتراضية، ولا مترجم متقاطع.

برنامج البداية هو نقطة دخول _start كاملة تقرأ سطرًا من الإدخال القياسي وتكتب تحية باستخدام نداءات النظام الخام read وwrite وexit، دون libc. هكذا يعمل التجميع فعليًا: تنقل الوسائط إلى rax/rdi/rsi/rdx، ثم تستدعي syscall، وتتكفّل النواة بالباقي. استخدم لوحة stdin أسفل المحرر لتزويد برنامجك بالإدخال في كل تشغيل، تمامًا كتوجيه البيانات إلى ملف ثنائي حقيقي.

ما الذي يجعل هذا الـ Assembly playground مفيدًا

  • سلسلة أدوات NASM x86-64 حقيقية. يُجمَّع مصدرك باستخدام nasm -f elf64 ويُربَط باستخدام ld على Linux، وهي الأوامر نفسها التي ستكتبها محليًا، لذا فما يعمل هنا يطابق ما يعمل على جهاز حقيقي.
  • نداءات نظام Linux مباشرة. يستخدم برنامج البداية read وwrite وexit عبر تعليمة syscall دون وجود libc بينها، فترى بالضبط كيف تحمل السجلات الوسائط والقيم المُعادة.
  • دعم الإدخال القياسي. أرسل وحدات البايت إلى برنامجك عبر لوحة stdin واقرأها بنداء النظام 0، وهو مفيد لتمارين 'اقرأ اسمًا واطبع تحية' الكلاسيكية وما يتجاوزها.
  • بلا إعداد، وتغذية راجعة فورية. لا تثبيت لـ NASM، ولا رايات رابط تُحفظ، ولا أخطاء أذونات: افتح الصفحة فيكون المحرر جاهزًا. تعود أخطاء المُجمِّع والرابط مباشرة في المخرجات.

ما الذي يمكنك تجربته في الـ Assembly playground

  • اطبع سلسلة نصية ثابتة بنداء نظام write واحد، ثم exit(0) نظيف: أصغر برنامج x86-64 كامل، وأسرع طريقة لرؤية كيف يتكامل _start مع syscall.
  • اقرأ من stdin إلى مخزن مؤقت من نوع .bss، وأزل سطر النهاية، ثم أعِد المدخل: النمط الكامن خلف كل تمرين تجميع مبني على الإدخال تقريبًا.
  • اجمع عددين في السجلات وحوّل الناتج إلى أرقام ASCII يدويًا كي تتمكن من طباعته بـ write. هكذا تتعلم أن التجميع ليس فيه print، بل وحدات بايت ونداءات نظام فقط.

الأسئلة الشائعة حول مترجم Assembly عبر الإنترنت

أي مُجمِّع وأي صيغة يستخدمها هذا الـ playground؟
يستخدم NASM (وهو Netwide Assembler) بصيغة Intel، مستهدفًا x86-64 Linux. يُجمَّع كودك باستخدام nasm -f elf64 ويُربَط باستخدام ld. إن كنت قادمًا من صيغة AT&T/GAS (أسلوب %rax وmovq)، فأعِد كتابته بأسلوب Intel الخاص بـ NASM: mov rax, 1، section .text، global _start.
هل أحتاج إلى تثبيت NASM أو رابط لاستخدام هذا؟
لا. تعمل سلسلة الأدوات الكاملة على الخادم داخل حاوية معزولة. تكتب NASM في المتصفح، وتضغط على تشغيل، فيقوم Coddy بتجميع برنامجك وربطه نيابة عنك. لا يوجد ما يُثبَّت محليًا: لا NASM، ولا ld، ولا آلة Linux افتراضية.
كيف أقرأ الإدخال في التجميع هنا؟
استخدم نداء النظام read (رقم 0): ضع 0 في rax (sys_read)، و0 في rdi (stdin)، وعنوان مخزن مؤقت في rsi، والعدد الأقصى للبايتات في rdx، ثم نفّذ syscall. كل ما تكتبه في لوحة stdin أسفل المحرر يُسلَّم إلى برنامجك عند التشغيل. يُظهر برنامج البداية النمط الكامل، بما في ذلك إزالة سطر النهاية.
لماذا يحتاج برنامجي إلى _start بدلًا من main؟
لأن برنامج البداية يُربَط باستخدام ld ودون بيئة تشغيل C. إن main اصطلاح خاص بـ libc، إذ يستدعيه كود بدء التشغيل الخاص بـ C بعد أن يهيّئ الأمور. مع ربط ld مجرد، لا توجد libc، لذا تقفز النواة مباشرة إلى العلامة _start، ولهذا يعرّف كل برنامج هنا global _start. وأنت مسؤول عن الخروج بشكل نظيف عبر نداء النظام exit (رقم 60) في النهاية.
هل يمكنني تعلّم التجميع بهذا المترجم حتى لو كنت مبتدئًا؟
نعم. ابدأ من برنامج التحية، وغيّر السلسلة النصية، وراقب المخرجات. ثم جرّب قراءة الإدخال، وإجراء العمليات الحسابية في السجلات، وتحويل الأرقام إلى نص يدويًا. ولأنه لا يوجد إعداد، ويعطي كل تشغيل تغذية راجعة فورية، يمكنك التكرار بسرعة، وهذا أسرع طريق لبناء حدس تجاه السجلات والذاكرة ونداءات النظام.

أدوات مفيدة لـ Assembly

أدوات مجانية تعمل في المتصفح تتكامل بشكل رائع مع ملعب Assembly البرمجي - جميعها جزء من Coddy.