الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دمج الاسمبلي مع C++

مغلقمُجاب
بدأه AGASHE في 4 أبريل 2014 · 4 رد · 936 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

بصراحة  بحثت  في  المنتدى  و لكن  لم  أجد  أي  موضوع  مشابه  و  كنت  أتمنى  من  الأعضاء  توضيح  لعملية  دمج  الاسمبلي

 

مع  C++  هل  تكون  بشكل مباشر  في  الكود  أم  تتم عن  طريق  ملفات  DLL  

 

  و شكرا

للإطلاع  على جديد  الكتب من تأليفي


 


الطريق لاحتراف تطوير المواقع   ج1 | ج2 | ج3 | ج4


 


                    4Colors | Break Out | Classic Snake | لعبة السودوكو - 2014  |  لعبة  XO                      


 


Help Dodo


 


^_^


 

#2

اخى الموضوع بسيط ان شاء الله كل ما عليك هو تعريف مقطع كود اسمبلى كما بلمثال

__asm {   mov al, 2   mov dx, 0xD007   out dx, al}
2

من طلب العلى سهر اليالى

#3

مشكور  و  جزاك  الله  كل  خير   اخ   3mr  على  الرد  اعتقدت ان  الموضوع  معقد  :huh:

 

  لكن  هل  تعرف  كتب  او  شروحات  اكثر  عن  استخدام  الموضوع   تنصحني  بها    :o

للإطلاع  على جديد  الكتب من تأليفي


 


الطريق لاحتراف تطوير المواقع   ج1 | ج2 | ج3 | ج4


 


                    4Colors | Break Out | Classic Snake | لعبة السودوكو - 2014  |  لعبة  XO                      


 


Help Dodo


 


^_^


 

#4 أفضل إجابة

يمكنك فصل ملف الأسمبلي عن ملف الـc/c++ لكن الطريقة تختلف بحسب المجمع المستخدم، لو كان لديك دالة اسمها asm_add تجمع رقمين ومكتوبة بالأسمبلي:

// file: file.cpp
#include <stdio.h>

extern "C" int
asm_add(int a, int b);

int
main(int argc, char **argv)
{
  printf("%d\n", asm_add(5, 2));
}

إذا كنت تستخدم gcc فيمكنك عملها هكذا:

# file : asm_add.s
.global _asm_add

.data

.text

_asm_add:
    movl    4(%esp), %eax
    addl    8(%esp), %eax
    ret
.end

لبناء البرنامج:

>g++ -Wall file.cpp asm_add.s>a.exe7>

أما لو كنت تستخدم msvc:

; file : asm_add.asm
.386
.model flat, c
public asm_add
.data

.code

asm_add proc
    mov eax, [esp+4]
    add eax, [esp+8]
    ret
asm_add endp

end

لبناءه:

> ml /c asm_add.asm
> cl file.cpp asm_add.obj
> file.exe
7
>
4
#5

مثال  رائع  فعلا  يستحق  التقييم  

 

ألف  ألف  شكر  :D  :D  :D

 

لكن  كان  عندي  سؤال 

 

هل  من  الممكن  تضمين  ملف  asm_add.asm   باستعمال  include   أم  يجب  ربطها  أثناء  الترجمة  

للإطلاع  على جديد  الكتب من تأليفي


 


الطريق لاحتراف تطوير المواقع   ج1 | ج2 | ج3 | ج4


 


                    4Colors | Break Out | Classic Snake | لعبة السودوكو - 2014  |  لعبة  XO                      


 


Help Dodo


 


^_^


 

هذا الموضوع مغلق.

مواضيع مشابهة