برنامج تجميع واتكوم المفتوح
مُجمِّع واتكوم المفتوح ( WASM ) هو مُجمِّع x86 من إنتاج شركة واتكوم ، وهو مُستند إلى مُجمِّع واتكوم الموجود في مُصرِّف واتكوم C/C++ ولغة واتكوم FORTRAN 77. [ 1 ] [ 2 ] [ 3 ] ويجري حاليًا تطوير مشروع JWASM ذي 32 و64 بت، [ 4 ] والذي يُطابق بشكلٍ أدقّ بنية مُجمِّع مايكروسوفت . [ 5 ]
توجد برامج تجميع تجريبية لـ PowerPC و Alpha AXP و MIPS . [ 6 ]
التفاصيل الفنية
مُجمِّع
أداة التفكيك
يوجد برنامج تفكيك Watcom مرتبط به ، يُسمى wdis . لا يحتوي المُجمِّع على وظائف لعرض قوائم التعليمات البرمجية؛ لذا يُنصح باستخدام wdis لإنشاء هذه القوائم. [ 7 ] يستطيع wdis قراءة ملفات الكائنات بصيغ OMF وCOFF وELF، بالإضافة إلى الملفات التنفيذية بصيغتي PE وELF. يدعم البرنامج مجموعات تعليمات x86 ذات 16 بت و32 بت، بما في ذلك MMX و3DNow! وSSE وSSE2 وSSE3. كما يتضمن دعمًا مدمجًا لمجموعات تعليمات PowerPC وAlpha AXP وMIPS و SPARC V8 . [ 8 ]
شوكات WASM
جيه واسم
JWasm هو نسخة معدلة من Wasm أنشأها يافث، ويتميز بالخصائص التالية:
- دعم أصلي لتنسيقات الإخراج Intel OMF (16/32 بت)، MS COFF (32 بت و 64 بت)، ELF (32 بت و 64 بت)، Bin و DOS MZ.
- تتوفر ملفات JWasm الثنائية المُجمّعة مسبقًا لأنظمة DOS وWindows وLinux. أما بالنسبة لأنظمة OS/2 وFreeBSD، فتتوفر ملفات makefiles.
- يدعم Intel x86 (8086، 80186، 80286، 80386، 80486، Pentium، Pentium Pro)، ومجموعات تعليمات x86-64 مع SIMD (MMX، 3DNow!، SSE، SSE2، SSE3 وSSSE3، SSE4.1/2 (منذ Jwasm)، AVX (منذ JWasm 2.06)، VMX ( Intel VT-x؛ AMD SVM ، على الرغم من أن الأخيرة تم تنفيذها بالفعل، إلا أنها لا تزال غير نشطة حاليًا) امتدادات (منذ JWasm 2.09)).
- JWasm مكتوب بلغة C. المصدر قابل للنقل وتم اختباره بنجاح مع Open Watcom و MS VC و GCC وغيرها.
- في نظام التشغيل ويندوز، يمكن استخدام JWasm مع كل من Win32Inc وMasm32. ومنذ الإصدار 2.01، سيعمل أيضًا مع مجموعة أدوات لغة التجميع Win32 الخاصة بـ Sven B. Schreiber، SBS WALK32 [ 9 ].
- يمكن تحويل ملفات رأس C لتضمين ملفات JWasm باستخدام h2incX المخصص الخاص بـ Japheth.
- يتم إصدار شفرة المصدر الخاصة بـ JWasm بموجب رخصة Sybase Open Watcom العامة، والتي تسمح بالاستخدام التجاري وغير التجاري المجاني.
- يدعم بشكل كامل صيغة تجميع الماكرو 6 من مايكروسوفت، وجميع مجموعات تعليمات MASM 8.
أوقف يافث تطوير JWASM (أو بالأحرى، انقطع الاتصال به) في يناير 2014 مع الإصدار 2.12pre، ولكنه يواصل العمل على المشروع حاليًا على GitHub، [ 10 ] الإصدار الحالي (يونيو 2024) هو 2.18. كما استأنف آخرون في منتدى Masm32 [ 11 ] العمل من حيث توقف يافث.
HJWasm
HJWasm، مع إضافة البادئة H نسبةً إلى عضو منتدى Masm32، هابران، الذي بدأ هذا التطوير الثاني لـ WASM. أُعلن عن الإصدار 2.13pre لأول مرة في عام 2016. [ 12 ] تشمل الميزات الجديدة ما يلي:
- تعليمات:
- SIMD:
- MMX : تمت إضافة MOVQ في الإصدار 2.13، لتكملة MOVD.
- AVX2 : VGATHERDPD، VGATHERQPD، VGATHERDPS، VGATHERQPS، VPGATHERDD، VPGATHERQD، VPGATHERDQ، VPGATHERQQ، تمت إضافة تعليمات الأغراض العامة المشفرة بـ VEX في الإصدار 2.13. تمت إضافة التعليمات المتبقية في الإصدار 2.16.
- AVX-512 : تمت إضافة تعليمات VCMPxxPD وVCMPxxPS وVCMPxxSD وVCMPxxPD وVCMPxxSS وAVX-512F المشفرة بتقنية EVEX في الإصدار 2.13؛ كما تمت إضافة VMOVQ في الإصدار 2.13، لتكملة MOVD. تمت إضافة التعليمات المتبقية في الإصدار 2.16.
- السجلات: تمت إضافة سجلات RIP و ZMM في الإصدار 2.13.
- تمت إضافة امتداد لغة البرمجة الكائنية في الإصدار 2.25.
HASM
HASM هو نسخة مُعاد تسميتها من HJWASM، بدءًا من الإصدار 2.33. تم استخدام هذا الاسم بعد نقاش في منتدى MASM اقترح اسمًا بديلًا. اقترح العضو habran اسم HASM في الرد رقم 6، [ 13 ] وتم اعتماده نهائيًا في نهاية النقاش في الرد رقم 33. [ 14 ] لم تُضَف أي ميزات جديدة معروفة في دورة إصدارات HASM.
UASM
استُخدم الاسم بالفعل في الإصدار 2.33 (بتاريخ 20 مايو 2017) على صفحة منتجات شركة Terraspace المحدودة، [ 15 ] ولكن لم يُعلن عنه إلا في الإصدار 2.34. [ 16 ] تشمل التغييرات التي طرأت على HJWASM ما يلي: [ 17 ]
- مجموعات التعليمات: تمت إضافة RDPID في الإصدار 2.38.
- AVX-512 : تمت إضافة VAESDEC في الإصدار 2.38
- نقل البيانات: تمت إضافة MOVBE في الإصدار 2.47. تمت إضافة MOVABS في الإصدار 2.48.
- Intel ADX : تمت إضافة ADCX وADOX في الإصدار 2.38
- Intel MPX : تمت إضافة دعم بادئة BND في الإصدار 2.34. تمت إزالة بادئة BND من مجموعة تعليمات JCXZ في الإصدار 2.40.
- مجموعة تعليمات CLMUL : تمت إضافتها في الإصدار 2.46.8، بما في ذلك أشكال العمليات الزائفة لـ CLMUL.
- التجزئة: تمت إضافة مجموعة تعليمات SHA في الإصدار 2.46.8.
- منع الوصول في وضع المشرف : تمت إضافة CLAC في الإصدار 2.38.
- ملحقات الذاكرة الدائمة : تمت إضافة CLFLUSHOPT في الإصدار 2.38.
- أنماط العنونة: 64 بت فوري مطلق (2.37)
- الأنواع المحددة
- أنواع السجلات: يدعم بشكل كامل السجلات وحقول السجلات حتى 32 بت في الإصدار 2.41.
- دعم SIMD 128 بت: تمت إضافته في الإصدار 2.42، وتمت إضافة تعريف مضمن مع النوع في الإصدار 2.43.1 / .2.
- تمت إضافة دعم سلسلة تعريف الأنواع (typedef chain) على أنواع الإرجاع في الإصدار 2.46.8.
- تمت إضافة أنواع m512 المدمجة في الإصدار 2.47.
- ترميز ألوان وحدة التحكم: تمت إضافته لأنظمة التشغيل Windows و OSX و Linux في الإصدار 2.43.1 / .2.
- استدعاء الدوال: تمت إضافة استدعاء الدوال على نمط لغة C في الإصدار 2.46.
مراجع
- ↑ راندال هايد. "WASM: مُجمِّع واتكوم المفتوح" . مؤرشف من الأصل بتاريخ 2012-03-02 . تم الاطلاع عليه بتاريخ 2017-09-11 .
- ↑ ليترمان، جيمس (2005). "MASM مقابل NASM مقابل TASM مقابل WASM". بنية لغة التجميع 80x86 ذات 32/64 بت . دار نشر ووردوير، ص 481. ISBN 978-1-59822-002-5تم الاطلاع عليه بتاريخ 2010-02-01 .
- ↑ ليترمان، صفحة 482 على كتب جوجل
- ↑ JWASM ، مُجمِّع 32/64 بت مبني على WASM وله بنية مشابهة لـ MASM . مؤرشف بتاريخ 10 أكتوبر 2014
- ↑ فوغ، أغنر (2009)، تحسين الإجراءات الفرعية في لغة التجميع (ملف PDF) (طبعة 26-09-2009 )، ص 13
- ١ ٢ افتح موقع Watcom الإلكتروني: برنامج التجميع مؤرشف بتاريخ ١٥ يوليو ٢٠٠٦ على موقع Wayback Machine
- ↑ OpenWatcom: مؤرشف بتاريخ 29-02-2012 في Wayback Machine "لا يتم إنشاء ملفات قوائم [بواسطة المُجمِّع]. قد يكون إنتاج قوائم كاملة مضيعة للجهد لأن برنامج wdis (مُفكِّك Open Watcom) يقوم بعمل ممتاز. ومع ذلك، قد يكون من المفيد للغاية إنتاج نسخة من جدول الرموز الداخلية كما يفعل MASM، خاصةً لأغراض التشخيص."
- ↑ افتح موقع Watcom الإلكتروني: برنامج التفكيك ( مؤرشف بتاريخ 15 يوليو 2006 في أرشيف الإنترنت)
- ↑ يتكون مشروع "WALK32" لعام 1996 من المكونات الرئيسية التالية:
- برنامج ربط ملفات PE (ملفات تنفيذية محمولة) كامل الميزات يسمى W32Link.
- ملف تضمين رئيسي، يحتوي على تعريفات الثوابت والأنواع والهياكل الخاصة بنظام Win32.
- ملف تضمين آخر، يحتوي على التطبيق وشفرة المصدر لبدء تشغيل مكتبة الارتباط الديناميكي (DLL).
- وحدات إدارة القطاعات وأقسام PE.
- وحدات الماكرو المتعلقة بدعم يونيكود.
- العديد من التطبيقات التجريبية وملفات DLL.
- مجموعة من أدوات البرمجة لأغراض متنوعة. (walk32.doc في walk32_1.zip)
- ^ جيثب/بارون فون ريديسيل/JWasm
- ↑ تطوير مُجمِّع UASM
- ↑ إصدارات HJWasm
- ↑ اسم جديد؟ (صفحة الموضوع 1)
- ↑ اسم جديد؟ (صفحة الموضوع 3)
- ↑ UASM (2.33)
- ↑ إصدار UASM 2.33
- ↑ سجل تغييرات UASM
روابط خارجية
- المجمّعون
