بسم الله الرحمن الرحيم
مقدمة نحو ARM
بنية المعالج ِARM :
انماط تشغيل الARM
للارم سبعة انماط تشغيل
1- نمط المستخدم وهو النمط الطبيعى لتنفيز البرنامج
2- نمط المقاطعة السريع FIQ
3- نمط المقاطعة العادى IRQ
4- نمط الالغاء ABT
5- نمط المشرف وهو نمط خاص اذا كنت تريد انشاء نظام تشغيل خاص او الاعتماد على نظام تشغيلSVE
6- نمط النظام وهو نمط يستطيع المستخدم التعامل معه فى حال وجود نظام تشغيلSYS
7- النمط غير المعرف يحدث عند معالجة تعليمة غير UND
Privileged Modes:fiq, irq, sve, abt, und,sys
Exception Modes:fiq, irq,sve,abt,und
المسجلات
يحتوى الARM على 31 مسجل اغراض عامة و 6 مسجلات حالة
مسجلات الاغراض العامة
The unbanked registers: r0~r7
The banked registers: r8~r14, r13 is always used for stack point,r14 is link register(LR).
Program Counter(PC): r15
Current program status register:cpsr
Saved program status register:spsr ,save the state of cpsr of the task immediately before the exception occurs.
الاستخدام البسيط يكون عادة فى نمط المستخدم وهو عندما تكتب برنامج بسيط ويقوم المعالج بتنفيذه
وهو النمط الذى سوف نعتمد علية فى الشرح
--------------------------------------------------------------------------------------------
الباب الاول:
المجمعات :-assemblers
فى هذا الباب سوف اناقش الهدف من المجمعات و مميزاتها حيث انها لاتقوم فقط بتحويل البرنامج الى لغة الالة كما نظن وانما لديها الكثير من المميزات كما سوف نناقش .
1- حقول المجمعات assemblers fields
تعليمات لغة التجميع تنقسم الى عدة حقول والحقل الوحيد الذى لايمكن ان تتركه فارغ هو حقل كود التشغيل لابد ان يحتوى على موجهات او تعليمات
Instruction or directive واحيانا يطلق على هذا الحقل
"pseudo-op "
الحقل الثانى هو حقل العنوان address fieldويمكن لهذا الحقل ان يحتوى على بيانات او عنوان أو حتى بنك bank
اما الحقلين الاخيرين فهما حقل التعليقات وحقل العلامات label field and comment field وهما حقلين اختياريين J
علامات التمييز Delimiters
هى علامات تستخدم داخل البرنامج حتى يستطيع المجمع فهم بداية ونهاية كل حقل مثل (whitespace) فيه تقوم بالفصل بين حقل العنوان وحقل التعليمة وحقل العنوان وتقوم الفاصلة المنقوطة بتمييز بداية حقل التعليقات
علامات التمييز القياسية لمجمع الارم هى
الموجهات directive
بعض تعليمات لغة التجميع لايتم تحويلها مباشرة الى لغة الالة وذلك يا اخوان لسبب بسيط لانها موجهات للمجمع تشير الى مواقع معينة فى الذاكرة او تعريفات لبعض الرموز او انشاء جداول او بيانات ثابته فى الذاكرة
من اشهر الموجهات فى لغة التجميع ARM
ِA- DEFINE CONSTANT (Data)
تمكن المبرمج من ادخال بيانات ثابتة فى زاكرة البرنامج
خذ على سبيل المثال الكود التالى للبرنامج
Altitude DCW 12
فهو يعنى اايها المجمع خزن لى لو سمحت الرقم 12 فى اقرب موقع ذاكرة تصادفه فى طريقك
Altitude وبالله لو سمحت سمى لى هذا الموقع
اذا ماهى تعليمة التوجيه ؟
هى DC وفى الغالب يكون لديها عنوان حتى تتمكن من استعادة بياناتك المخصصة عن طريق العنوان
اذا كتبت DCW فان المجمع سوف يحجز لك مساحة كلمة على الاقل word
واذا كتبت DCB فان المحمع سوف يحجز لك مساحة بايت على الاقل
وبالمناسبة موجه DC واحد يمكن ان يستخدم يملا اكثر من موقع واحد فى الذاكرة
مثلا اذا كنت اريد تخزين كلمة Elamin
فاذا كتبت الامر الثالى
DCB 'Elamin
يقوم المجمع بحجز نطاق من الزاكرة يسمح بتخزين كل الكلمة
------------------------
ان شاء الله سوف نواصل فى المرة القادمة
تقبلوا تحياتى اخوكم محمد الامين