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

استفسارات عن برمجة الهارد وير

بدأه Electronic boy في 20 يونيو 2009 · 19 رد · 5,227 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ،،،

إخواني ، منتديات الفريق العربي للبرمجة الكرام ، أما بعد ...

في البداية سيكون هذا التقاش على جزئين ، الجزء الأول هو استفسارات عن البرمجة بلغة السي ، لكن ليس للحاسب الشخصي تحت النظام ويندوز ، بل لبرمجة الأجهزة الأخرى ( مثل منصات الألعاب ) ، وأنا شخصياً مهتم بجنون ببرمجة هذه الأجهزة والإستفادة من قدراتها الخارقة ! كما أنني أعتبره تحدي لبرمجة أجهزة ( مغلقة ) إن صح التعبير ، فليس هناك وثائق رسمية من الجهات الصانعة لترشد المستخدم العادي لبرمجة هذه الأجهزة ، وإنما جميع المعلومات المتوفرة هي نتيجة لجهود فردية أو مجموعات ، وغالباً ما تكتشف هذه المعلومات عن الأجهزة السابقة الذكر عن طريق الهندسة العكسية للجهاز ومكوناته ، وهي ليست أكيده أو صحيحة دائماً ، ولكنها تفي بالغرض على المدى البعيد.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

أعتقد أن موضوعي قد يبدو غريب للوهلة الأولى ، وهو غريب فعلاً في المنتديات العربية ، إذ أنني ولحد الآن لم أشاهد أي منتدى أو موقع عربي يناقش هذا النوع من البرمجة ، لذلك ، كان لي الشرف بأن أطرح هذا الموضوع للنقاش وفي واحد من أفضل ساحات النقاش العربية المختصة بالبرمجة والكمبيوتر.

قبل كل شيء ، أود أن أعطيكم هذا الرابط الذي يؤدي لموقع ( شبكة ) تهتم ببرمجة أجهزة الألعاب ، وتحديداً أجهزة شركة سوني ( بلايستيشن 2 ) وغيرها من الأجيال التالية ، وسوف تذهلون من النتائج التي توصل إليها فريق المبرمجين في هذه الشبكة ، أترككم لتصفح الرابط :

Playstation 2 Development Network

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#2

دعونا نناقش هذا الكود ..

//---------------------------------------------------------------------------

// File: demo1.c

// Author: Tony Saveski, t_saveski@yahoo.com

//---------------------------------------------------------------------------

#include "g2.h"

//---------------------------------------------------------------------------

#define RAND_A 9301

#define RAND_C 49297

#define RAND_M 233280

static uint32 seed=0x12345678;

float crap_rand(void)

{

// small delay...

uint32 i;

for(i=0; i<0xFFF; i++) {}

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#3

ما أنا مهتم به هو برمجة العتاد ( Hardware ) ، لكننا لم نتطرق لهذا النوع من البرمجة في الجامعة حتى في مادة ( لغة برمجة متقدمة ) ، ولم يستطيع إفادتي أي دكتور في الجامعة بهذا الخصوص ، رغم أنه من الأساسيات باعتقادي ، وإليكم بعض الإستفسارات التي لم أستطع أن أجد لها إجابة منذ وقت طويل ، فالنبدأ على بركة الله :

في بداية كل برنامج بلغة السي ، يجب كتابة اسم ملف الرأس ( Header.h ) وهي الملفات ذات الإمتداد .h ، فعلياً ، ما حقيقة هذه الملفات ؟ وماذا تعني ؟ ومن أين تأتي ؟ هل هي تأتي مع بيئة التطوير أم أن المستخدم يقوم بإنشائها ؟

إليكم ما كتب في إحدى المواضيع في الموسوعة العربية للكمبيوتر والإنترنت عن هذه الملفات :

=-=-=-=-=-=-=-=-=-=-=-=-=

ألان ، ماهي ملفات الرأس Header File وماذا تحتوي ؟؟ ما هي المكتبات Library ؟؟

ملفات الرأس مثل iostream.h ، أو math.h ، هي ملفات تحتوي بداخلها على الإعلان عن الدوال والطبقات المستخدمة ،، لاحظ فقط الإعلان declaration ويسمى أحيانا Prototype .

التعريف عن هذه الدوال يكون داخل ملفات المكتبات Library (وأحيانا ملفات DLL) . وعندما نترجم البرنامج ويبدأ برنامج الدمج بالعمل يقوم بالربط بين ملف الهدف مع هذه المكتبات.

دائما ما نلاحظ أن أول سطر في برنامج C++ يبدأ بهذا السطر ؟

#include <iostream.h>ماذا تعني هذه الجملة .. في البداية الرمز # (هاش Hash) هو احد توجيهات المعالج التمهيدي Preprocessor Directive.. هناك الكثير من هذه الجمل في لغة الـ C ، وأيضا تستخدم في C++ لكن قل استخدمها عما كان . نعود إلى الرمز # ، هناك جزء صغير من المترجم يسمى \"المعالج التمهيدي Preprocessor \" هذا الجزء يعمل دائما عندما نبدأ في ترجمه البرنامج ، أي يعمل أولا ثم يبدأ المترجم في عمله ، وظيفته هي ترجمه التوجيهات (أي جمله تبدأ ب#) إلى احد الأوامر الخاصة ، بعد أن يقوم بتحويلها يقوم المترجم بأداء عمله ..

الكلمة include ، معناها تضمين ، \"أي قم أيها المعالج التمهيدي بتضمين ملف الرأس هذا إلى الـ Code Source\" ، ماذا يعني هذا ؟؟ بكل بساطه يقوم المعالج بنسخ Copy ملف الرأس ولصقه Paste في بداية ال Source Code .

<iostream.h> ، هذا هو ملف الرأس بالامتداد .h ، القوسين الصغيرين < > وظيفتها إعلام المعالج بأن هذا الملف يقع في المكان المعتاد له .. وفي الأغلب هو في البارتيشن C داخل مجلد بيئة التطوير (يختلف اسم المجلد من بيئة لأخرى ، لكن في الأغلب يكون هو نفسه اسم البيئة) هناك مجلد اسمه Header File يحتوي على جميع ملفات الرأس .

أيضا من الممكن كتابة السطر الأول بالشكل /

كود:

#include \"iostream.h\"القوسين \" \" ، وظيفتهما إعلان المعالج بأن يبحث عن هذا الملف داخل مجلد الذي حفظ فيه الSource Code ، وإذا لم يجده يقوم بالانتقال إلى المجلد المعتاد .

مثلا كتبت برنامج وملف رأس خاص بك وحفظته داخل البارتيشن D ، يقوم المعالج بالبحث عن ملف الرأس داخل هذا المجلد فإذا لم يجده انتقل إلى المجلد المعتاد داخل الـC . هذه الطريقة قد تزيد من وقت ترجمه البرنامج (لان هناك عمليه بحث ) ، لكنه ليس بالوقت الكثير .

=-=-=-=-=-=-=-=-=-=-=-=-=-=

أشار كاتب الشرح إلى أن ملفات الرأس تحوي بداخلها إعلان عن الدوال وليست الدوال ذاتها !! وأن هذه الدوال موجودة أصلاً ( جاهزة ) ضمن ملفات dll ، وأشار أيضاً إلى أنه يمكن للمستخدم كتابة ملفات الرأس الخاصة به !!

لكن السؤال هنا ، أليس من الغريب أن يقوم المستخدم بكتابة ملفات رأس خاصه به تشير إلى دوال غير موجودة أساساً في ملفات dll ؟؟؟

إذاً كيف سيتعرف عليها المترجم ( Compiler ) ؟ وهذا ملاحظ من الكود الموجود بالأعلى حيث وضع كاتب الكود ملف الرأس خاصته المسمى ( g2.h ) وهذا مالا أفهمه !! وقد واجهت الكثير من المشاكل أثناء محاولتي ترجمة البنامج على الإصدار السادس من بيئة مايكروسوفت !! هذا غريب فعلاً .

ومالم أفهمه أيضاً إستخدام أرقام على الهيئة ( 0xFFF ) ، فما المقصود بها ؟ وماذا تعني 0x قبل الرقم ؟

==============

لقد أضفت في المرفقات بعض الأكواد وملفات الرأس الخاصة بالمشروع لمزيد من الإطلاع على طبيعة هذه البرامج. :blink:

أرجو أن يكون هذا واضحاً ، يتبع ....

PS2Tut1_sample_code.rar

تم تعديل هذه المشاركة بواسطة Electronic boy في 20 يونيو 2009 في 04:03

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#4

وعليكــم السـلام ورحمة الله وبركاتـه..

اقتباس
في البداية سيكون هذا التقاش على جزئين ، الجزء الأول هو استفسارات عن البرمجة بلغة السي ، لكن ليس للحاسب الشخصي تحت النظام ويندوز ، بل لبرمجة الأجهزة الأخرى ( مثل منصات الألعاب ) ، وأنا شخصياً مهتم بجنون ببرمجة هذه الأجهزة والإستفادة من قدراتها الخارقة ! كما أنني أعتبره تحدي لبرمجة أجهزة ( مغلقة ) إن صح التعبير ، فليس هناك وثائق رسمية من الجهات الصانعة لترشد المستخدم العادي لبرمجة هذه الأجهزة ، وإنما جميع المعلومات المتوفرة هي نتيجة لجهود فردية أو مجموعات ، وغالباً ما تكتشف هذه المعلومات عن الأجهزة السابقة الذكر عن طريق الهندسة العكسية للجهاز ومكوناته ، وهي ليست أكيده أو صحيحة دائماً ، ولكنها تفي بالغرض على المدى البعيد.

تقنيا قدرات الأجهزه - تسمى Console - محدود مقارنة بقدرات الحاسب الألى لإن نظم التشغيل الخاصه بهم تكون Single Task و اثبات ذلك انك اذا قمت بتشغيل لعبة على جهاز البلاى ستيشن او الـ XBOX او Dreamcast و غيرهم لن تجد ابدا زر او رابط ما داخل اللعبه يجعلك تغلقها!! اما داخل اجهزة الكمبيوتر فإثناء تشغيلك للعبه يمكن ان يكون عدد كبير من البرامج يعمل و بالتالى فأنظمة تشغيل الحاسب اكثر تعقيدا عن انظمة تشغيل الأجهزه الـ Console.

عندما تقوم شركة بتصنيع Hardware معين تقوم بعمل وثائق له لفهم كيفية التعامل معه و لإن وثائق اجهزة البلاى ستيشن او الـ XBox غلية الثمن جدا و لا يقدر عليها إلا الشركات الكبيره و ليس كل الأفراد فنادرا ما تجد هذه الوثائق متوفره و لكنها موجوده.

هذه الوثائق تنقسم قسمين اولهما شرح الهاردوير نفسه على مستوى لغة الأسمبلى و كذلك شرح الأسمبلر الخاص بالجهاز. ثانيهما شرح المكتبات البرمجيه التى تاتى مع الجهاز و التى من خلالها تستطيع البرمجه و حيث ان لغة الـ C++ هى اكثر اللغات انتشارا فستجد ان اغلب المكتبات البرمجيه مؤهله للعمل مع كوبيلر الخاص بالـ c++ و هو ايضا يأتى مع وثائق الجهاز.

المجهودات الفرديه تحدث عند دراسة وثائق الهاردوير جيدا و كذلك استخدام الهندسه العكسية مع المكتبات لإمكانية عمل Emulators او صنع مكتبات جديده لهذا الجهاز او اكتشاف دوال مخفيه عن المبرمج ... و هكذا.

اقتباس
ما أنا مهتم به هو برمجة العتاد ( Hardware ) ، لكننا لم نتطرق لهذا النوع من البرمجة في الجامعة حتى في مادة ( لغة برمجة متقدمة ) ، ولم يستطيع إفادتي أي دكتور في الجامعة بهذا الخصوص ، رغم أنه من الأساسيات باعتقادي ، وإليكم بعض الإستفسارات التي لم أستطع أن أجد لها إجابة منذ وقت طويل

الكليه الخاصه ببرمجة العتاد هى نفسها الخاصه بصنعها و هى كلية الهندسه قسم الكترونيات فهناك يدرسوا كل اجزاء الهاردوير و كيفية تجميعها لعمل جهاز معين ايضا كيفية برمجة هذا الجهاز الذى صنعته.

إن كنت مهتم بهذا الموضوع فقد قمت منذ فتره بإضافه روابط لتحميل كتب برمجة العاب احداهما لـ Game Institute و اسمه Video Game Console Design و هو مجموعة فيديوهات و يمكنك الدخول عليها من هنا و سيعلمك بعض الأساسيات فى هذا الموضوع.

ايضا ستجد فى المرفقات بعض الوثائق الخاصه ببرمجة جهاز البلاى ستيشن 2 (كلفنى البحث عنهم نصف ساعه :blink: ) و هما كتابين احداهما لبرمجة البروسسور الخاص به و شرح الأسمبلى الخاصه به و الأخر شرح لمكتبة الجرافيك الخاصه بالحهاز.

ايضا قمت برفع وثائق البرمجه لجهاز XBox 360 Live و يمكنك تحميل الملف من هنا

اقتباس
في بداية كل برنامج بلغة السي ، يجب كتابة اسم ملف الرأس ( Header.h ) وهي الملفات ذات الإمتداد .h ، فعلياً ، ما حقيقة هذه الملفات ؟ وماذا تعني ؟ ومن أين تأتي ؟ هل هي تأتي مع بيئة التطوير أم أن المستخدم يقوم بإنشائها ؟

طبعا اجابة هذا السؤال بسيطه لمن يعرف لغة السى او السى بلس بلس فإذا قمت بدراسة احداهما ستعرف ماهية هذه الملفات.

و لكن لتعرف عموما لبرمجة اى جهاز console لابد من توافر الوثائق الخاصه به و لتقوم لبرمجة تحت نظام تشغيل معين Windows ، Linux ، Solaries ، Macintoch او غيرهما لابد ان يتوافر لديك الـ SDK الخاصه بنظام التشغيل و التى تحتوى على كل المعلومات اللازمه للبرمجه لهذا النظام.

و الله ولى التوفيق

Playstation_docs.rar

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 20 يونيو 2009 في 06:43

مدونتي: C++ Tips and Tricks

#5

أخي العزيز محمد ، أشكرك جزيل الشكر على ردك الرائع والذي شجعني كثيراً على الإستمرار، وأعاد لي الأمل بأنه مازال في أمتنا رجال من أمثالك :wub:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

بخصوص قدرات نظام التشغيل في أجهزة الـ ( Console ) فأنا أعلم بأنها وحيدة المهام ، لكن معمارية وحدة المعالجة المركزية لها مصممة بشكل يتفوق على أفضل معالج من فئة بنتيوم ، فلقد قرأت في عام 2003 مقال عن وحدة المعالجة المركزية في جهاز البلايستيشن 2 ، كتب هذا المقال في مجلة IEEE الشهيرة وسأضع نسخة من هذه المقالات في المرفقات بإذن الله ، وقد كتب هذا المقال المهندسون القائمون على مشروع بلايستيشن 2 في عام 1999 ، وقد تمت مقارنة معالج البلايستيشن 2 المسمى ( Emotion Engine ) سرعته 300 ميغاهيرتز ، بمعالج بنتيوم 3 حديث في ذلك الوقت سرعته 1 غيغاهيرتز ، وكان التفوق ساحق بالنسبة لمعالج EE الذي سرعته 300 ميغاهيرتز !! تخيل ... وهذه السرعة بسبب معماريته المتفوقه المصممة وفق فلسفة RISC .

لذلك ، قامت العديد من الجهات العلمية والمؤسسات التقنية باستخدام هذا الجهاز للأغراض العلمية ، وسأرفق لكم هذه المقالات إن شاء الله ...

وللعلم ، منعت حكومة الولايات المتحدة الأمريكية جهاز البلايستيشن 2 من دخول الصين في أول نزوله للأسواق سنة 2000 ، وذلك بسبب خشية سوء استخدام التكنولوجيا المتطورة الموجودة في الجهاز استخدامات غير قانونية !! ( هذا الخبر قرأته في موقع الألعاب العربي في أوائل سنة 2001 ).

========================================

أخي العزيز ، أرجو أن نكون جادين في النقاش هذه المرة ، ولنكمل لللآخر ، حتى نصل للفائدة المرجوة ، وليس إضاعة الوقت في نقاش لا يؤدي إلى نتيجة تذكر ، كما حدث معي في المرات السابقة ، ولقد قمت بوضع موضوع قبل سنتين تقريباً أستفسر فيه عن التقنيات البرمجية الجديدة الموجودة في الأجهزة الحديثة مثل تقنية XNA وغيرها ، كما كتبت في هذا الموضوع :

مناقشة حول تقنيات البرمجة على المنصة الجديدة XBOX 360

وللأسف ، لم نصل إلى نتيجة تذكر ، وقد تم إغلاق الموضوع ، فإذا كان لديك علم بما أستفسر عنه ، أرجو منك المتابعة وإفادتي قدر المستطاع ، ولك مني جزيل الشكر ...

تم تعديل هذه المشاركة بواسطة Electronic boy في 21 يونيو 2009 في 02:11

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#6

الأمر لايوجد فيه أسرار أو قوى خارقة !

كما قال الاخ محمد علاء ..

حتى تطوّر لأي نظام تشغيل ..يجب وجود عدّة تطوير مقدمة من هذا النظام بحيث يسمح لك هذا النظام الاستفادة من خدماته الاساسية ويعفيك من الاقتراب من الهاردوير .. أنت تقوم بتحميل هذه SDK .. وقد يكون معها Compiler خاص بهذا النظام .. وتستخدمه .

هذا كل مافي الأمر ,

اقتباس
في بداية كل برنامج بلغة السي ، يجب كتابة اسم ملف الرأس ( Header.h ) وهي الملفات ذات الإمتداد .h ، فعلياً ، ما حقيقة هذه الملفات ؟ وماذا تعني ؟ ومن أين تأتي ؟ هل هي تأتي مع بيئة التطوير أم أن المستخدم يقوم بإنشائها ؟

إليكم ما كتب في إحدى المواضيع في الموسوعة العربية للكمبيوتر والإنترنت عن هذه الملفات :

=-=-=-=-=-=-=-=-=-=-=-=-=

ألان ، ماهي ملفات الرأس Header File وماذا تحتوي ؟؟ ما هي المكتبات Library ؟؟

ملفات الرأس مثل iostream.h ، أو math.h ، هي ملفات تحتوي بداخلها على الإعلان عن الدوال والطبقات المستخدمة ،، لاحظ فقط الإعلان declaration ويسمى أحيانا Prototype .

التعريف عن هذه الدوال يكون داخل ملفات المكتبات Library (وأحيانا ملفات DLL) . وعندما نترجم البرنامج ويبدأ برنامج الدمج بالعمل يقوم بالربط بين ملف الهدف مع هذه المكتبات.

دائما ما نلاحظ أن أول سطر في برنامج C++ يبدأ بهذا السطر ؟

هذه مكتبة قياسية للغة السي بلس , بدلا من أن تأتي مع كل مترجم مكتبة خاصة به , اتفقوا على مجموعة من المقاييس , لتوحيد المكتبة القياسية للغة السي , لذلك لغة السي بلس , اذا استخدمتها بشكل صحيح ( اعتمدت على المقاييس ) فسيعمل برنامجك على أي نظام تشغيل ( أو لنقول Compiler ) يتبع هذه المقاييس .

iostream قد لاتجدها في بعض المترجمات الخاصة .. اذا لم يكن لها فائدة , مثل عدّة التطوير PlayStation , لا أظن أنها تحوي على مكتبات السي القياسية .. لان ليس لها فائدة كبيرة ..

خلاصة الأمر .. لا أجد شيء غريب في الموضوع :unsure:

من الممكن أن لم أفهمك جيدا ... المعذرة .

اقتباس
وللأسف ، لم نصل إلى نتيجة تذكر ، وقد تم إغلاق الموضوع ، فإذا كان لديك علم بما أستفسر عنه ، أرجو منك المتابعة وإفادتي قدر المستطاع ، ولك مني جزيل الشكر ...

الموضوع يغلق تلقائياً بعد فترة معينة على آخر رد .

تم تعديل هذه المشاركة بواسطة الشمري في 21 يونيو 2009 في 01:57

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7

ذكرت بأن الشركات المصنعة للأجهزة تقوم بعمل وثائق لها لشرح تركيبها وطرق برمجتها ، وهذا الكلام صحيح 100 % ، لكن هذه الوثائق وحزمة التطوير SDK لا تعطى ( ولا يمكن الحصول

عليها ) إلا للشركات المطورة للألعاب مقابل عقود سنوية وترخيص محدد يدفع مقابله مبلغ يتفق عليه الطرفين ( مصنع الجهاز ومصنع البرنامج ) .

أما الأشخاص الذين ليس لهم علاقة بالموضوع لا من قريب ولا من بعيد ( مثلي ومثلك :happy: ) تسميهم الشركات المصنعة ( End User ) ، أي أن عليه أن يستخدم الجهاز كما يأتيه من المصنع دون زيادة أو نقصان !! ولا يمكن للشركات أن تعطي المستخدم النهائي أي شيء من المعلومات الفنية المتعلقة بالجهاز الذي تصنعه ، مهما كانت هذه المعلومات بسيطة !! :S والمسألة ليست متعلقة بالسعر كما ذكرت !! يعني حتى لو أنك طلبت هذه الوثائق من الشركة المصنعة وكنت على استعداد لدفع مبلغ هائل لن يعطوك إياها ، مادمت أنك مستخدم عادي .

-=-=-=-=-=-=-=-=-=-=-=-=-

اقتباس
هذه الوثائق تنقسم قسمين اولهما شرح الهاردوير نفسه على مستوى لغة الأسمبلى و كذلك شرح الأسمبلر الخاص بالجهاز. ثانيهما شرح المكتبات البرمجيه التى تاتى مع الجهاز و التى من خلالها تستطيع البرمجه و حيث ان لغة الـ C++ هى اكثر اللغات انتشارا فستجد ان اغلب المكتبات البرمجيه مؤهله للعمل مع كوبيلر الخاص بالـ c++ و هو ايضا يأتى مع وثائق الجهاز.

إذا كنت تقصد ( بالمكتبات البرمجية ) ملفات الرأس XXXX.h فليس هناك أي مكتبه رسمية موجودة للإستخدام العام ، كل هذه المكتبات قام ببرمجتها الهواة والمهتمين بهذه المواضيع !

ويمكنك التوجه للمنتدى الموجود في شبكة PS2DEV ويمكنك مشاهدة المشاركات هناك !! :blush:

بالنسبة لموضوع المحاكيات لهذه الأجهزة ، فأنا أقضي اليوم بأكمله محاولاً الحصول على طرف خيط يدلني على طرق برمجة هذا النوع من التطبيقات !! فلا يوجد وثائق رسمية تشرح تركيب الجهاز ولا حتى نظام التشفير المستخدم في ملفات اللعبة !! شيء محير فعلاً ؟ كيف استطاع الهواة كتابة محاكيات لأغلب إن لم نقل جميع أجهزة الألعاب المعروفة حالياً ؟

لابد أن هناك شيئاً غير معروف لنا أو حتى مخفي عنا !!! شيء يدعوا إلى التفكير العميق :wacko: :blink:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

اقتباس
لكليه الخاصه ببرمجة العتاد هى نفسها الخاصه بصنعها و هى كلية الهندسه قسم الكترونيات فهناك يدرسوا كل اجزاء الهاردوير و كيفية تجميعها لعمل جهاز معين ايضا كيفية برمجة هذا الجهاز الذى صنعته.

إن كنت مهتم بهذا الموضوع فقد قمت منذ فتره بإضافه روابط لتحميل كتب برمجة العاب احداهما لـ Game Institute و اسمه Video Game Console Design و هو مجموعة فيديوهات و يمكنك الدخول عليها من هنا و سيعلمك بعض الأساسيات فى هذا الموضوع.

أخي العزيز ، أنا أدرس ( هندسة إلكترونيات ) ، ولم نتطرق لمثل هذه المواضيع ، فأغلب الدكاتره في الجامعة لا يعرفون شيئاً عن هذه الأشياء ، وقمت بسؤال العديد منهم عن أشياء كثيرة في لغة السي ، منها ملفات الرأس .h فلم يستطع أحدهم الإجابة على استفساراتي وقالوا لي هذه الملفات تأتي جاهزة ولا يحق لك العبث بها ، حتى أنه حدثت لي مشاكل كثيرة بيني وبين دكاترة الكلية بسبب أسئلتي هذه ، فتوقفت عن سؤالهم وتوجهت للبحث على النت ولم أجد الإجابه حتى الآن !! فأنت لم تجبني عن ملفات الرأس في المشاركة السابقة ! :P

بالنسبة لـ ( Video Game Console Design ) ، أردت تحميلها لكنني وجدت أن الجزء الأول منها فقط حجمه 200 ميغابايت ، فأرجو منك أن تعطيني نبذه عن هذه العروض وهل ستفيدني ( حتى لا أقوم بتحميلها إذا كانت لا تناسبني ) ، فحجمها ضخم جداً، وما هي الـ ( Game Institute ) ؟ هل هي جهة رسمية تشرف على مصممي الألعاب ؟

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

بالنسبة للملفات المرفقة الخاصة بجهاز بلايستيشن 2 ، فأنت أرسلت ملف يشرح عن معالجات ARM ، وليس المعالج Emotion Engine الخاص بالجهاز ، صحيح أن جهاز البلايستيشن الأول كان يستخدم معالج Risc له معمارية R3000 من عائلة معالجات ARM لكن لا أدري مدى صحة هذا الكلام ، ربما تكون النسخة المستخدمة في البلايستيشن 2 نسخة معدلة عن معالجات

ARM 5400 ولا أدري إن كانت تخضع لنفس المعمارية أم لا :S

كما أن الوثائق الأخرى هي لجهاز XBOX القديم وليس للجهاز الحديث 360 ، على العموم الإكس بوكس له نفس معمارية جهاز البي سي ، إلا أنه محدود المهام ، ويمكنك مراجعة موضوعي القديم (مناقشة حول تقنيات البرمجة على المنصة الجديدة XBOX 360) ، حتى أنه من أسهل الأجهزة على الهاكرز في كسر حمايته ، لا أدري إن سمعت بقضية شركة تكمو ( TECMO ) اليابانية بخصوص : DOAX Nude hack عام 2003 ، ولم أصدق ذلك حتى حصلت على اللعبة وشاهدتها بأم عيني ، فذهلت لما رأيت وما زلت مذهولاً حتى هذه اللحظة !! ( يمكننا مناقشة هذه القضية فيما بعد إن أردت ) . :happy:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

اقتباس
طبعا اجابة هذا السؤال بسيطه لمن يعرف لغة السى او السى بلس بلس فإذا قمت بدراسة احداهما ستعرف ماهية هذه الملفات

أرجو أن تجيبني على هذا السؤال ، فموضوعي أصلاً من أجل هذه الملفات والتي لم أجد أي كتاب يشرحها بالتفصيل !!

آسف على الإطالة ....

post-8448-1245539254_thumb.jpg

Playstation_2_Articles.rar

تم تعديل هذه المشاركة بواسطة Electronic boy في 21 يونيو 2009 في 02:09

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#8
اقتباس
هذه مكتبة قياسية للغة السي بلس , بدلا من أن تأتي مع كل مترجم مكتبة خاصة به , اتفقوا على مجموعة من المقاييس , لتوحيد المكتبة القياسية للغة السي , لذلك لغة السي بلس , اذا استخدمتها بشكل صحيح ( اعتمدت على المقاييس ) فسيعمل برنامجك على أي نظام تشغيل ( أو لنقول Compiler ) يتبع هذه المقاييس .

iostream قد لاتجدها في بعض المترجمات الخاصة .. اذا لم يكن لها فائدة , مثل عدّة التطوير PlayStation , لا أظن أنها تحوي على مكتبات السي القياسية .. لان ليس لها فائدة كبيرة ..

كلام الأخ الشمرى صحيح 100%، فالـ SDK الخاصه للـ Playstation 2 لا يوجد معها ملفات header لـ iostream.

تقوم منظمة الـ ISO كل فتره بتطوير لغة الـ c++ و تطوير معها مكتباتها الـ Standard، و حتى الأن قامت منظمة الـ ISO بتطوير أربع إصدارات من مكتبات و لغة الـ c++ و هما على التوالى 1998، 2003، 2006، 2008 و يطلق على الأخيره اسم C++0x و هى اخر اصدارات C++.

ستجد فى المرفقات كتاب الـ ISO/IEC 14882 التى تمثل الإصدار الثانى من لغة C++ لعام 2003.

و الله ولى التوفيق

C__2003_2nd.rar

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 21 يونيو 2009 في 02:11

مدونتي: C++ Tips and Tricks

#9
اقتباس
لكن هذه الوثائق وحزمة التطوير SDK لا تعطى ( ولا يمكن الحصول عليها ) إلا للشركات المطورة للألعاب مقابل عقود سنوية وترخيص محدد يدفع مقابله مبلغ يتفق عليه الطرفين ( مصنع الجهاز ومصنع البرنامج )

هذا الكلام غير صحيح. تكلفة الـ SDK الخاصه بالـ Playstation 2 الإصدار الثالث تصل إلى 30000$ و ترخيصها دائم لصاحبها و الدليل على ذلك انه انا لدى الـ SDK بإصداراتها الثلاثه و مع ذلك لا استطيع ان اقوم بعمل test لبرامجى إلا بتنزيلها على الهارد ديسك للبلاى ستيشن (الخاص بصديقى، فللأسف لا امتلك احداهما ) - او تجربته على الـ emulator (و كان هو احد الحلول المضله).

يتم شراء الـ sdk من احد افرع الشركه المنتجه للجهاز (sony فى حالتنا).

بالنسبه لمصادر هذه المعلومات فهى من الإنترنت بشكل عام قد يكون احداها سليم او غير ذلك و لكن من بحثى المستمر فى هذا الموضوع كنت اجد المعلومات واحده من مصادر مختلفه.

اقتباس
يعني حتى لو أنك طلبت هذه الوثائق من الشركة المصنعة وكنت على استعداد لدفع مبلغ هائل لن يعطوك إياها

هذا يخالف طبيعة البيع و الشراء فالـ sdk منتج و الهدف من المنتج هو بيعه، و طبعا انت لن تذهب لشراء منتج و تدفع فيه مبلغ باهظ الثمن مثل هذا لمجرد التسليه او نشره على الإنترنت، و هذا الكلام يوجد بشكل اكيد فى الترخيص و هو انه لا حق لك فى نشر او توزيع هذا المنتج بدون علم الشركه المنتجه و موافقه كتابيه صريحه منها و إذا فعلت غير ذلك عرضت نفسك للمساله القانونيه.

اقتباس
إذا كنت تقصد ( بالمكتبات البرمجية ) ملفات الرأس XXXX.h فليس هناك أي مكتبه رسمية موجودة للإستخدام العام ، كل هذه المكتبات قام ببرمجتها الهواة والمهتمين بهذه المواضيع !

الـ sdk تحتوى على مجموعه كبيره من ملفات الـ header و لكنى لم ارفقها و كذلك طبعا الـ object files و تأخذ الإمتداد .a و .o اما المكتبات التى قام ببرمجتها الهواه فلا اعلم عنها شئ لإنى لم استخدمها من قبل.

اقتباس
أخي العزيز ، أنا أدرس ( هندسة إلكترونيات ) ، ولم نتطرق لمثل هذه المواضيع ، فأغلب الدكاتره في الجامعة لا يعرفون شيئاً عن هذه الأشياء ، وقمت بسؤال العديد منهم عن أشياء كثيرة في لغة السي ، منها ملفات الرأس .h فلم يستطع أحدهم الإجابة على استفساراتي وقالوا لي هذه الملفات تأتي جاهزة ولا يحق لك العبث بها ، حتى أنه حدثت لي مشاكل كثيرة بيني وبين دكاترة الكلية بسبب أسئلتي هذه ، فتوقفت عن سؤالهم وتوجهت للبحث على النت ولم أجد الإجابه حتى الآن !! فأنت لم تجبني عن ملفات الرأس في المشاركة السابقة !

بالنسبه لملفات الـ Header فقد قام الأخ الشمرى فى المشاركه رقم 6 بتوضيح الأمر لك و قمت انا برفع الملف الخاص بالـ c++ standard فى المشاركه رقم 8(قبل هذه)

فإن كنت تقصد امر اخر فأرجو التوضيح.

اقتباس
بالنسبة لـ ( Video Game Console Design ) ، أردت تحميلها لكنني وجدت أن الجزء الأول منها فقط حجمه 200 ميغابايت ، فأرجو منك أن تعطيني نبذه عن هذه العروض وهل ستفيدني ( حتى لا أقوم بتحميلها إذا كانت لا تناسبني ) ، فحجمها ضخم جداً، وما هي الـ ( Game Institute ) ؟ هل هي جهة رسمية تشرف على مصممي الألعاب ؟

بإختصار يقوم بتعليمك كيفيه صنع جهاز console خاص بك و يعلمك كيف تبرمج لعبه لتعمل عليه.

اما Game Institute فهى شركه تقوم بعمل كورسات فى برمجة الالعاب و حقيقة هى كورسات جميله جدا جدا و موقعها هو www.GameInstitute.com

اقتباس
بالنسبة للملفات المرفقة الخاصة بجهاز بلايستيشن 2 ، فأنت أرسلت ملف يشرح عن معالجات ARM ، وليس المعالج Emotion Engine الخاص بالجهاز ، صحيح أن جهاز البلايستيشن الأول كان يستخدم معالج Risc له معمارية R3000 من عائلة معالجات ARM لكن لا أدري مدى صحة هذا الكلام ، ربما تكون النسخة المستخدمة في البلايستيشن 2 نسخة معدلة عن معالجات ARM 5400 ولا أدري إن كانت تخضع لنفس المعمارية أم لا

نعم كلامك صحيح معالج الـ ARM معالج قديم لإجهزة البلاى ستيشن وقد تم استبداله بمعالج بالـ EE و لكن هذا الملف هو كان الموجود امامى مع شرح مكتبة EE فرفعته لك :huh: .

اقتباس
أرجو أن تجيبني على هذا السؤال ، فموضوعي أصلاً من أجل هذه الملفات والتي لم أجد أي كتاب يشرحها بالتفصيل

انا فعلا غير مستوعب قصدك من هذا السؤال فأرجو المزيد من التوضيح حتى نستطيع افادتك

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#10
اقتباس
هذا الكلام غير صحيح. تكلفة الـ SDK الخاصه بالـ Playstation 2 الإصدار الثالث تصل إلى 30000$ و ترخيصها دائم لصاحبها و الدليل على ذلك انه انا لدى الـ SDK بإصداراتها الثلاثه و مع ذلك لا استطيع ان اقوم بعمل test لبرامجى إلا بتنزيلها على الهارد ديسك للبلاى ستيشن (الخاص بصديقى، فللأسف لا امتلك احداهما ) - او تجربته على الـ emulator (و كان هو احد الحلول المضله).

أخي الحبيب ، أنت تفاجئني بكلامك !! ولم أكن أعلم أبداً بأنه يمكن لأي شخص الحصول على حزمة التطوير الخاصة بجهاز Playstation 2 أو غيره :wacko: لكن ما دمت تملك هذه الحزم بإصدارات مختلفة ، هل يمكنك أن تذكر لي كيفية الحصول على واحده منها ؟ ( الرجاء وضع صور لها )

الأمر الآخر .... ماهي مكونات الـ SDK التي لديك ؟ لأني أعرف أن هناك جهاز خاص يسمى ( Tool kit) صورته في المرفقات.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

اقتباس
الـ sdk تحتوى على مجموعه كبيره من ملفات الـ header و لكنى لم ارفقها و كذلك طبعا الـ object files و تأخذ الإمتداد .a و .o اما المكتبات التى قام ببرمجتها الهواه فلا اعلم عنها شئ لإنى لم استخدمها من قبل.

لقد فهمت من كلامك أننا نتحدث عن شيئين مختلفين ، فأنت تتحدث عن البرمجة باستخدام SDK الرسمية ، وأنا أتحدث عن البرمجة بدون هذه الحزمة ، أي البرمجة غير الرسمية !!

ربما أكون فهمت الموضوع بشكل خاطيء !! ويكون لدي السؤال التالي : هل البرمجة باستخدام الـ SDK هي الطريقة الوحيدة الممكنة أم أن هناك طرق أخرى ؟

والسؤال الأساسي ، هل الـ SDK هي نفسها IDE أم أنهما شيئين مختلفين تماماً ؟

==================================

اقتباس
انا فعلا غير مستوعب قصدك من هذا السؤال فأرجو المزيد من التوضيح حتى نستطيع افادتك

الموضوع كالتالي :

أنا طالب في هندسة الإلكترونيات ( ولست مبرمج ) ، مهتم في برمجة أجهزة الكونسول والتعديل عليها وعمل إضافات عليها غير رسمية.

درست كورسين في البرمجة بلغة السي بلس في الجامعة ، إلا أن هذه الكورسات عقيمة والمدرسين غير كفوئين في تدريس هذه المادة.

بما أنني مهتم بالبرمجة ولم أجد أحد يستطيع إفادتي من حولي قررت شراء الكتب وتحميل المصادر من الإنترنت ، ولقد استفدت كثيراً ، إلا أنني كلما تعمقت أكثر في البرمجة ازدادت الخيارات وازدت أنا تشتتاً ... فلقد قرأت ذات مرة في كتاب بالجامعة أنه يمكنني عمل ملفات الرأس ( Header.h ) خاصة بي ولكن عندما أريد أن أستخدمها يجب أن أضع قوسين " my header.h "

بدلاً من <> ، لكن ما الفائدة من كتابة ملفات الرأس الخاصة بي ؟ وهل يمكن ذلك فعلاً ؟

مع أنني أعتبر نفسي جيداً بالبرمجة بلغة السي بلس ، إلا أنني أجد نفسي عاجزاً تماماً عن كتابة برامج تتعامل مع الهاردوير ( العتاد ) ، مثلاً : أردت كتابة برنامج يقوم بعمل

( Dumping BIOS ) ( يقوم بسحب البرنامج الموجود في البيوس ) الخاص الموجود في البي سي لدي ، فلم أستطع ، وعندما بحث في النت عن هذا النوع من البرمجيات وجدت دوال غريبه ولم تمر علي من قبل ، فأدركت أن الموضوع كبير لدرجة التعقيد !! ( مثلاً : يضعون أرقام كهذه Define 0xFFF21 ) فماذا يقصدون بذلك ؟ وماذا يقصد بـ ( 0x ) ؟

فمثلاً : يوجد في مجلد ( Include ) الموجود في ملفات الكومبايلر 6 ++ MS-VC العديد من ملفات الرأس ، وأنا فعلياً لم أدرس سوى أوامر الملفات math.h و iostream.h و stdio.h

فقط !! ، لكن إذا أردت أن أدرس جميع أوامر هذه الملفات ، فهل يوجد مرجع يتحدث عن ذلك ؟ أم أن الأمور لا تجري بهذه الطريقة !!

ذات مرة ذهبت لأشتري الكومبايلر Microsoft visual studio 6 الإصدار السادس كان هذا سنة 2000، ( نسخة كوبي طبعاً :P ) فقال لي البائع النسخة الكاملة تتكون من ستة أقراص مدمجة !! فتفاجأت من كلامه ، وقلت له لا يوجد نسخة على قرص واحد ، فقال لي الكومبايلر فقط يأتي على قرص واحد ، والباقي يحتوي على مكتبات !! فلم أفهم كلامه واشتريت الكومبايلر فقط.

ماذا يقصد بالمكتبات ؟ وهل الملفات ذات الإمتداد .h تعتبر مكتبات ؟ أم أن الموضوع أكبر من ذلك ؟؟؟؟ :huh:

( أرجو توضيح مكونات الأقراص الستة إذا كان لديك خلفية عن الموضوع ).

post-8448-1245595202_thumb.jpg

تم تعديل هذه المشاركة بواسطة Electronic boy في 21 يونيو 2009 في 17:51

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#11

لقد فهمتك الأن بشكل صحيح

سأضع الرد بعد قليل

مدونتي: C++ Tips and Tricks

#12

أشكرك على المتابعة ، وأنتظرك بفارغ الصبر ...

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#13

اعتذر عن التأخير حيث اننا نقوم بعمل اصلاحات فى البيت و كنت اختلس الوقت للجلوس على الكمبيوتر :blush: .

اقتباس
ماهي مكونات الـ SDK التي لديك ؟ لأني أعرف أن هناك جهاز خاص يسمى ( Tool kit) صورته في المرفقات

نسخ الـ sdk حصلت عليها من التورنت. الم اذكر فى المشاركه السابقه ان المشكله لدى كانت فى اختبار البرنامج حيث ان البوكس غير موجود و بالتالى اقوم بعمل execute للبرنامج و اقوم بإختباره من الـ emulator

اقتباس
هل البرمجة باستخدام الـ SDK هي الطريقة الوحيدة الممكنة أم أن هناك طرق أخرى ؟

لا اعرف فلم ابحث عن مصادر اخرى.

اقتباس
هل الـ SDK هي نفسها IDE أم أنهما شيئين مختلفين تماماً

هما شيئين مختلفين، فالـ sdk هى - كما ذكرنا من قبل - الوثائق و المكتبات البرمجيه التى تتيح لك عمل برامج لتعمل على جهاز البلاى ستيشن.

اما الـ IDE فهو محرر الكود الذى تستخدمه لكتابة برنامجك. فيمكنك الإستعانه بأى محرر و لكن الـ sdk تبقى كما هى.

توجد بعض البرامج التى يمكن ان تساعدك فى عمل debug لبرامج البلاى ستيشن (و جدتها اثناء البحث - اين كانت :S ) مثل ProDG و يمكنك الدخول على الموقع http://www.snsys.com/ps3/prodg.asp

اقتباس
فلقد قرأت ذات مرة في كتاب بالجامعة أنه يمكنني عمل ملفات الرأس ( Header.h ) خاصة بي ولكن عندما أريد أن أستخدمها يجب أن أضع قوسين " my header.h " بدلاً من <> ، لكن ما الفائدة من كتابة ملفات الرأس الخاصة بي ؟ وهل يمكن ذلك فعلاً ؟

الأمر #include له صيغتان احداهما هى <header_file> و الأخرى "header_file"، اما الأولى فتجعل الـ preprocessor يبحث عن ملف الـ header داخل الـ include directory المعرف داخل الـ ide او الذى تم تعريفه داخل نظام التشغيل (ليقرأ منه الكومبيلر). اما الأخرى فيقوم الـ preprocessor بالبحث عن الملف داخل فولدر المشروع.

بالنسبه للفائده من ملفات الـ header فهى لا يوجد بديل لها اذا اردت ان تصنع انواع بيانات جديده خاصه بك.

اقتباس
مع أنني أعتبر نفسي جيداً بالبرمجة بلغة السي بلس ، إلا أنني أجد نفسي عاجزاً تماماً عن كتابة برامج تتعامل مع الهاردوير ( العتاد ) ، مثلاً : أردت كتابة برنامج يقوم بعمل ( Dumping BIOS ) ( يقوم بسحب البرنامج الموجود في البيوس ) الخاص الموجود في البي سي لدي ، فلم أستطع ، وعندما بحث في النت عن هذا النوع من البرمجيات وجدت دوال غريبه ولم تمر علي من قبل ، فأدركت أن الموضوع كبير لدرجة التعقيد !! ( مثلاً : يضعون أرقام كهذه Define 0xFFF21 ) فماذا يقصدون بذلك ؟ وماذا يقصد بـ ( 0x ) ؟

فى اعتقادى لا يوجد شئ بالغ التعقيد فبالترتيب و التنظيم و المعرفه الجيده كل شئ يصبح سهل و حتى تصل لذلك المستوى لابد من بذل مجهود كبير و كما يقال "بقدر الكد تكتسب المعالى و من طلب العلا سهر اليالى و من طلب العلا بغير كد اضاع العمر فى طلب المحال" فلا تيس و كلما فشلت تأكد من انك على وشك النجاح.

بالنسبه لهذه النوعيه من الأرقام فهى ارقام بالنظام السداسى العشرى و هو نظام ارقام تجده يستخدم بكثره من طرف مهندسى الإلكترونيات الذين يقوموا بتصنيع برامج للهاردوير حيث ان هذا النظام يسمح لهم بتمثيل محتويات الذاكره بشكل سهل - حيث ان كل رقمين متجاورين يمثلوا بايت.

لتقوم بكتابة ارقام بالنظام السداسى العشرى داخل لغة السى و مشتقاتها - سى بلس بلس او سى شارب - تبدأ بالحرفين 0x يليهم الرقم بصيغة السداسى العشرى.

اقتباس
فمثلاً : يوجد في مجلد ( Include ) الموجود في ملفات الكومبايلر 6 ++ MS-VC العديد من ملفات الرأس ، وأنا فعلياً لم أدرس سوى أوامر الملفات math.h و iostream.h و stdio.h فقط !! ، لكن إذا أردت أن أدرس جميع أوامر هذه الملفات ، فهل يوجد مرجع يتحدث عن ذلك ؟ أم أن الأمور لا تجري بهذه الطريقة !!

انت لم تدرس باقى الملفات لإن المنهج الخاص بهم لم يتطرق لهم، و بالنسبه للمرجع فنعم يوجد يمكنك مراجعة المشاركه رقم 8 و التى ستجد فى مرفاتها كتاب من منظمة الـ ISO يشرح الكثير من هذه الملفات بالتفصيل فإذا لم يرضيك هذا الكتاب يمكنك الدخول على موقع مايكروسوفت و البحث عن نسخة MSDN لإصدار الفجوال ستديو الذى تستخدمه و بعد تحميلها و تثبيها على جهازك قم بتشغيها و ابحث بإسم الملف الـ header و ستجد شرح وافى او بدلا من التحميل - حيث ان مساحتها تقارب الـ 3 جيجا - يمكنك استخدام النسخه الـ online الموجوده بموقع ميكروسوفت.

اقتباس
ذات مرة ذهبت لأشتري الكومبايلر Microsoft visual studio 6 الإصدار السادس كان هذا سنة 2000، ( نسخة كوبي طبعاً :P ) فقال لي البائع النسخة الكاملة تتكون من ستة أقراص مدمجة !! فتفاجأت من كلامه ، وقلت له لا يوجد نسخة على قرص واحد ، فقال لي الكومبايلر فقط يأتي على قرص واحد ، والباقي يحتوي على مكتبات !! فلم أفهم كلامه واشتريت الكومبايلر فقط.

نسخة الفيحوال ستديو 6 كانت تتكون من - على ما اتذكر - اسطوانتين للفيجوال ستديو و اسطوانتين للـ msdn - و اسطوانه ادوات اضافيه - ISA Server و نسخة IIS لويندوز 98 - مش فاكر اسمها - و نسخة Install Shield

اما الإسطوانه السداسه فلست متذكرها.

اقتباس
ماذا يقصد بالمكتبات ؟ وهل الملفات ذات الإمتداد .h تعتبر مكتبات ؟ أم أن الموضوع أكبر من ذلك ؟؟؟؟ :huh:

قبل ان نتكلم عن المكتبات سنتكلم عن ماهية الملفات الـ header.

داخل السى يتم فصل تعريف الدوال عن الكود الخاص بها كلُ فى ملف خاص به فيتم وضع تعريف الدوال داخل ملف يأخذ الإمتداد .h - رأس الدوال - و بعد ذلك يتم عمل include لذلك الملف داخل ملف خاص بالكود هذا الملف يسمى - implementation file - حيث يكون الكود الفعلى لهذه الدوال داخل هذا الملف.

عند عمل compile للبرنامج يقوم الكومبيلر بتحويل الملف ذات الإمتداد .cpp لما يسمى بـ object code .

نتوقف هنا و نقوم بتعريق ماهية المكتبات

المكتبات هى عبارة عن مجموعة الاكواد التى تقوم بمجموعة من الوظائف المتجانسه فيتم تجميعها فى مكان واحد - مثل الكتب داخل المكتبه تجد مكتبة كتب الرياضيات او مكتبة كتب علوم الحاسب مجموعه من العناصر المتجانسه (المتشابه فى المضمون) مجمعه فى مكان واحد للتسهيل و التنظيم - و للمكتبات نوعين

1 - مكتبات استاتيكيه : و تأخذ الإمتداد .lib : بعد ان يقوم الكومبيلر بإنشاء الـ object code يبدأ اللينكر فى عمل دمج ما بين جميع الـ object code داخل البرنامج لينشئ لنا ملف وحيد و هو فى حالتنا هذه .lib

سميت هذه المكتبه بإستاتيكيه لإنها بدلا من ان تقوم بعمل ربط على مكتبه اخرى تقوم انت بإستخدامها تقوم بإحضار كود الداله المستخدمه و تضمينه داخل مكتبتك.

بعد بذلك تقوم انت بأخذ الملفات ذات الإمتداد .h بالإضافه للملف .lib و تقوم بإعطائهم للمبرمج الذى سيقوم بإستخدامهم - سنعرف لاحقا كيفية استخدام الملف lib.

2 - مكتابات ديناميكيه او مكتبات الربط الديناميكى و هما ملفين يأخذوا الإمتداد .lib و .dll : بعد ان يقوم الكومبيلر بإنشاء الـ object code يبدأ اللينكر فى عمله ليقوم بدمج الـ object code داخل البرنامج لينشئ لنا ملف وحيد و هو فى حالتنا هذه .dll و بالإضافه إلى هذا الملف يوجد ملف اخر معه و هو .lib فما هما:

اما الملف الـ dll فيحتوى على الكود التنفيذى الذى قمنا بكتابته و اما الملف .lib فيحتوى على اسماء الدوال و الكائنات التى قمت بتصديرها .. و لكن ما الهدف من هذا الملف؟ لمعرفة الهدف من الملف لابد من شرح نقطة صغيره اولا:

عندما تقوم بالبرمجه لنظام و يندوز و تقوم بإستخدام داله و ليكن SendMessege داخل الكود الخاص بك من اين يأتى الكومبيلر بهذه الداله، احد خصائص المشروع الإفتراضيه التى لا دخل لك بها هى عمل ربط على ملفات نظام التشغيل الرئيسيه و منها kernal32.lib و shell32.lib و user32.lib فكما تلاحظ الملفات جميعها تأخذ الإمتداد .lib هذا لإن اللينكر الخاص بالـ c++ (نسخة مايكروسوفت) لا يستطيع فهم اى ملف غير .lib و الذى بدوره يحتوى على معلومات تشير ان الكود التنفيذى للداله المستخدمه يوجد فى ملف .dll.

و بالتالى نعرف ان اللينكر يقوم بإنشاء هذا الملف حتى إذا ارسلت للمبرمج المكتبه الخاصه بك ان يقوم بإضافة الملف ذات الإمتداد .lib للمشروع الخاص به حتى يستطيع اللينكر ان يعرف مكان الكود الذى سيقوم بتنفيذه.

سمي هذا النوع بمكتبات الربط الديناميكى او مكتبات ديناميكيه لإن اللينكر لا يقوم بتضمين الكود الخاص بأى دوال مستخدمه من مكتبات اخرى و لكن فقط يقوم بعمل reference عليها ليتم استخدامها اثناء الـ runtime.

ارجو من الأخوه إذا كان يوجد خطأ التصحيح لتعم الإفاده.

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 22 يونيو 2009 في 03:29

مدونتي: C++ Tips and Tricks

#14

عفوا ... ارغب بمعرفة الغرض من الموضوع ,, :S

لأنني وجدت الموضوع بدء بشكل تعليمي ثم توجه لجمع استفسارت عن لغة سي ++ نفسها ومرة عن العمل على الـ SDK ومازلت لم افهم المغزى من الموضوع :huh:

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#15

من يستطيع اجابتك عن هذا السؤال هو Electronic boy

مدونتي: C++ Tips and Tricks

#16

لحسن الحظ وجدت بعد الدروس التعليميه و بعض المقالات المفيده لبرمجة البلاى ستيشن 2 و هذا هو لينك تحميلهم

http://rapidshare.com/files/247535320/PS2.rar

مدونتي: C++ Tips and Tricks

#17

أخي مشرفنا الكريم time1 ، لقد تركت الموضوع لمدة شهرين ونصف ، محاولاً البحث عن إجابة لسؤالك ... وهو لماذا طرح هذا الموضوع أساساً ؟!

يتضح من هذا السؤال بأنني لم أوفق من تفسير وجهة نظري ، ففي البداية كما قلت بأنني أرغب بتعلم لغة البرمجة C++ لا لأجل تطوير التطبيقات تحت الويندوز ولكن لصنع برامج تعمل على أجهزة الكونسول (Console) ، حيث أنني مهتم كثيراً بعمليات الهندسة العكسية على التطبيقات والأجهزة نفسها ،، وإليك مثال على ذلك ...

طرحت شركة سوني كمبيوتر انترتينمنت جهاز تشغيل الألعاب المحمول (PSP) اختصار للجملة (playstation portable) صورته في المرفقات ، فقام الهواة والمخترقون بعمل تعديلات على برنامج الجهاز الأساسي (firmware) للتمكن من تشغيل ألعاب أجهزة أخرى على الجهاز ، لا بل أمكنهم من عمل تعديلات وبرامج تسمح للمستخدم تشغيل البرامج المقرصنة ( الألعاب التي يتم تحميلها من المواقع و خدمة التورنت ! ) ،، وللتوضيح أكثر .. هناك برنامج خاص بهذا الجهاز اسمه (Castem 3.71m33) وهو من تطوير ( دارك أليكس وفريقه الروسي الملقب بـ M33 )

وهذا البرنامج ( الكاستم ) هو عباره عن تعديل في نظام الجهاز الأساسي firmware ليجعل الجهاز قادر على تشغيل ألعاب الجهاز Playstation القديم الذي تم طرحه عام 1996 !!

ولعلك تستغرب أكثر ، إذا قلت لك بأنهم استطاعوا تشغيل نظام ويندوز 95 على الـ PSP ههههههه يبدو الموضوع مضحك حقاً :happy: لكنها الحقيقة !! :huh: ( للتأكد من كلامي قم بالبحث في جوجل عن هذه الجملة : تشغيل ويندوز على البي إس بي ) .

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

قدم لي الأخ ( محمد علاء ) معلومات رائعة جداً - مشكوراً على ما قدم - لكنني مازلت أبحث عن أمور أعمق في هذا الموضوع ،، فإن تمكنا من هذا العلم ( نحن العرب ) لقطعنا شوطاً كبيراً في دنيا العولمة... ولحللنا الكثير من المشاكل ،، ولا تستغرب كلمة مشاكل ، لأن هذا العلم سلاح ذو حدين ،، وما جعلني أقف كالمصعوق عام 2003 عندما وجدت في الأسواق لعبة على جهاز الإكس بوكس تم تعديل رسوم الشخصيات عليها - بشكل غير قانوني - ( لتبدو اباحية ) !! نعم ، ماذا لو وقعت هذه الألعاب بيد الصغار ؟ أين نحن المثقفون من هذا العالم السفلي المرعب ؟ هذه هي القرصنة !! لكن السؤال الأخطر ،، هو كيف تمكن القراصنة من التعديل على برنامج بطريقة غير رسمية !

نعم ، هناك أمور أخرى كثيرة فيما يخص هذا الموضوع لا يتسع الحديث لذكرها ، لكنها لا تخلو من الأهمية ( بالنسبة لي على الأقل ) حالياً ، أرجو أن أكون وضحت وجهة نظري ، و أعتذر عن تأخر الرد -_-

Windows and Linux on the Sony PSP

post-8448-1255092533_thumb.jpg

post-8448-1255093537_thumb.jpg

تم تعديل هذه المشاركة بواسطة Electronic boy في 9 أكتوبر 2009 في 16:06

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#18

برمجة الألعاب على منصات الألعاب هي نفسها تماماً على الكومبيوتر، ليس هنالك شيء خارق أو سحري في الموضوع، في الحقيقة في معظم الحالات تقوم الشركات بتطوير ألعابها بإستخدام PC إعتيادي كالذي تملكه وأملكه انا ولكن يمكنهم ترجمة الكود لمنصة الألعاب وتشغيله للتجربة (ينطبق هذا الكلام على جميع المنصات الموجودة اليوم).

إذا أردت أن تجرّب فسأعطيك الخطوات التالية لكي تبرمج على XBOX 360 لا بل وتطرح لعبتك للبيع بشكل قانوني 100%، وبدون الحاجة لأي SDK سرّي أو أي أجهزة خاصة وبكلفة معقولة:

- تحتاج جهاز XBOX 360 مزود بقرص صلب

- إشتراك فضّي في XBOX Live (وهو الإشتراك الإعتيادي المجاني)

- إشتراك في XNA Creators Club (يكلف حوالي 100$ لكل سنة)

- جهاز كومبيوتر مع كارت شاشة جيد يدعم DirectX9 و Shader Model 2.

- مترجم Visual C# 2008 Express مع مكتبة XNA (يمكن تحميلهم مباشرة من هنا)

- سلك شبكة إعتيادي ليربط بين XBOX 360 والكومبيوتر، أو يمكن ربط الـ XBOX 360 على الـ router او الـ hub حاله حال الكومبيوتر.

When you develop games for Xbox 360, you develop them on your Windows-based computer, then transfer them over your local network to your Xbox 360 console. This requires that your Windows-based computer and Xbox 360 console share the same subnet. Most home networking layouts support this configuration. If your console and computer share a router or hub, it is likely that they share the same subnet.

- إتبع هذه المقالة التي تبين كيفية الربط بين الكومبيوتر وأكس بوكس

- برمج لعبتك على الكومبيوتر باستخدام #C و XNA.

- يمكنك رفع اللعبة لجهاز XBOX 360 وتجربتها.

- يمكنك بيع لعبتك عن طريق XBOX Live والحصول على الأرباح.

:)

تم تعديل هذه المشاركة بواسطة SandHawk في 9 أكتوبر 2009 في 19:53

#19

ههههههههه ،، هل هذا معقول !! بهذه البساطة !!

يبدو أنني فهمت كل شيء الآن عن هذه الجزئية بالتحديد ... أشكرك على المساهمة ، فهي حقاً رائعة :clapping:

بقي أن أعرف التقنية المستخدمة في كسر حماية الأجهزة لتشغيل برامج أجهزة أخرى عليها مثل PSP وغيره .

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

#20

لقد اطلعت اليوم على حزمة التطوير XDK 360 ، لكن أود أن أسألك ... ما الحاجة لحزمة التطوير الخاصة إذا كان بالإمكان تطوير البرامج بدون استخدامها كما ذكرت في الرد السابق؟

post-8448-1256587472_thumb.jpg

تم تعديل هذه المشاركة بواسطة Electronic boy في 26 أكتوبر 2009 في 23:04

Electronic%20boy%203.jpg

قال أحد الحكماء المسلمين:

" العلم ثلاثة أشبار ، من دخل الشبر الأول تكبر ، و من دخل الشبر الثاني تواضع ، و من دخل الشبر الثالث علم أنه لايعرف شيئ !! "

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