السلام عليكم
بصراحة بحثت في المنتدى و لكن لم أجد أي موضوع مشابه و كنت أتمنى من الأعضاء توضيح لعملية دمج الاسمبلي
مع C++ هل تكون بشكل مباشر في الكود أم تتم عن طريق ملفات DLL
و شكرا
السلام عليكم
بصراحة بحثت في المنتدى و لكن لم أجد أي موضوع مشابه و كنت أتمنى من الأعضاء توضيح لعملية دمج الاسمبلي
مع C++ هل تكون بشكل مباشر في الكود أم تتم عن طريق ملفات DLL
و شكرا
للإطلاع على جديد الكتب من تأليفي
الطريق لاحتراف تطوير المواقع ج1 | ج2 | ج3 | ج4
4Colors | Break Out | Classic Snake | لعبة السودوكو - 2014 | لعبة XO
^_^
اخى الموضوع بسيط ان شاء الله كل ما عليك هو تعريف مقطع كود اسمبلى كما بلمثال
__asm { mov al, 2 mov dx, 0xD007 out dx, al}من طلب العلى سهر اليالى
مشكور و جزاك الله كل خير اخ 3mr على الرد اعتقدت ان الموضوع معقد :huh:
لكن هل تعرف كتب او شروحات اكثر عن استخدام الموضوع تنصحني بها :o
للإطلاع على جديد الكتب من تأليفي
الطريق لاحتراف تطوير المواقع ج1 | ج2 | ج3 | ج4
4Colors | Break Out | Classic Snake | لعبة السودوكو - 2014 | لعبة XO
^_^
يمكنك فصل ملف الأسمبلي عن ملف الـ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 >
مثال رائع فعلا يستحق التقييم
ألف ألف شكر :D :D :D
لكن كان عندي سؤال
هل من الممكن تضمين ملف asm_add.asm باستعمال include أم يجب ربطها أثناء الترجمة
للإطلاع على جديد الكتب من تأليفي
الطريق لاحتراف تطوير المواقع ج1 | ج2 | ج3 | ج4
4Colors | Break Out | Classic Snake | لعبة السودوكو - 2014 | لعبة XO
^_^
هذا الموضوع مغلق.