Post

Assembly Interrupts/System Calls list for Linux Kernel

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

لي فترة أصارع مع Assembly على بيئة جنو/لينوكس … أنا لست خبير في هذه اللغة ولكن الحمد لله عندي صديق خبير فيها بشكل مميز للغاية (عمل ألعاب عليها ::22 الله يوفقه، لكن هو يعرف أسمبلي على الويندوز وليس جنو/لينوكس) وجالس يساعدني في تعلمها وإتقانها الى حد ما … الأمر الوحيد الذي وقف عائق في وجهنا أنا وهو هي لم نصل الى أرقام الـ Interrupts أو الـ System Calls الخاصة بـ Kernel جنو/لينوكس … عندي Reference ممتاز لـ Interrupts الخاصة بالـ BIOS ولكن للنواة لا … بحثت كثيراً أنا وإياه الجمعة الماضية ولكن كل الذي وجدناه هو الـ System Call على شكل دالة C … أي كلهم يعطونني HLA … وأنا أريد قائمة الـ Interrupts مع كل متغيير يستطيع أن يأخذها هذا الـ Interrupt … فكما يعرف الأخوة الذين يبرمجون في أسمبلي بإن كل Interrupt له قائمة من القييم التي يقبلها الـ registers أو الذاكرة … وكل واحد من هذه القييم لها دوور ووظيفة … سأواصل البحث وأحاول أشوف طريقة للحصول على هذه القوائم …

راسلت الأخ مؤيد السعدي وأفادني ببعض الأمور منها بإنني عند حصولي على الدالة مثلاً mknod والتي بالـ C تبدأ هكذا:

int mknod(const char *pathname, mode_t mode, dev_t dev);

أخبرني بإنه

pathname —> ebx

mode —> ecx

dev —> edx

سأقوم بالتجربة وأشوف … إن شاء الله تكون حل لما أبحث عنه …

ملاحظة: للحصول على هذه الدالة وغيرها أبحث في المصدر للنواة نفسها … يعني هنا:

/usr/src/$(uname -r)/include/asm-x86/

حالياً أنا استعمل NASM ولكننا وجدنا مؤخراً بإنه لا يدعم الـ Registers الجديدة مثل eex و efx و egx وربما حتى التي تخص الـ Multimedia … لا أعلم إن كان كلامنا 100% سليم أم لا … وربما يستطيع أحد أن يصححني في هذه الناحية … سأحاول تجربة GAS والذي هو لجماعة GNU نفسهم والذي أعتقد يفترض يدعم كل المعالجات الجديدة بما فيها جميع إمكانيات البانتيوم وما بعدها … أيضاً كبداية أنصح بقراءة الكتاب Linux Assembly Language Programming بسيط للغاية ويعطيك زبدة بداية الإستعمال للأسمبلي على جنو/لينوكس … موقع وجدته الحين وأنا أبحث عن رابط للكتاب الذي ذكرته بالأعلى Which Assembler is the Best? سأقوم بقرائته أيضاً إن شاء الله وإن شاء الله يفيدكم …

ودمتم بود …

This post is licensed under CC BY 4.0 by the author.