لغة الآلة: الفرق بين النسختين

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
الرجوع عن تعديلين معلقين من 1914 red baron إلى نسخة 31084856 من Hassan1424.
ط بوت: إصلاح خطأ فحص ويكيبيديا 48
سطر 1:
{{تشغيل البرنامج}}
{{for|الكود الداخلي تمامًا لبعض وحدات المعالجة المركزية (CPUs) والتي لا يمكن الوصول إليها عادةً من قبل المبرمجين|الكود المصغر}}
[[File:W65C816S Machine Code Monitor.jpeg|thumb|شاشة لغة الآلة في [[الكمبيوتر أحادي اللوحة]] [[دبليو دي سي 65816/65802]]، يُظهر {{وإووصلة إنترويكي|المفكك|Disassembler|نص=مفكك الكود}}، وكذلك سجل المعالج ومقالب الذاكرة.]]
'''لغة الآلة''' أو '''كود الآلة''' {{إنج|Machine code}} عبارة عن برنامج كمبيوتر مكتوب في [[مجموعة التعليمات|تعليمات]] '''لغة الآلة''' يمكن تنفيذه مباشرة من خلال [[وحدة معالجة مركزية|وحدة المعالجة المركزية]] [[حاسوب|للكمبيوتر]] (CPU). تتسبب كل تعليمة في قيام وحدة المعالجة المركزية بأداء مهمة محددة جدًا، مثل التحميل أو {{وإووصلة إنترويكي|تفرع (علوم الحاسب)|Branch (computer science)|نص=القفز}} أو عملية [[وحدة الحساب والمنطق]] على وحدة البيانات في [[سجل المعالج|سجل وحدة المعالجة المركزية]] أو الذاكرة.
 
كود الآلة عبارة عن لغة رقمية بحتة تهدف إلى التشغيل في أسرع وقت ممكن، ويمكن اعتبارها أدنى مستوى تمثل [[برنامج (حاسوب)|برنامج كمبيوتر]] [[محول برمجي|مُترجم]] أو [[لغة تجميع|مُجمع]] أو [[لغة برمجة|كلغة برمجة بدائية]] تعتمد على [[عتاد الحاسوب]]. في حين أنه من الممكن كتابة البرامج مباشرة في كود الآلة، فإنه من الممل والخطأ التعرض لإدارة البتات الفردية وحساب العناوين الرقمية والثوابت يدوياً. لهذا السبب، في السياقات الحديثة نادراً ما يتم كتابة البرامج مباشرة في كود الآلة، ولكن يمكن القيام بها [[تنقيح برمجي|لتصحيح الأخطاء]] على مستوى منخفض، وإنتاج [[باتش]] لبرنامج ما، و{{وإووصلة إنترويكي|المفكك|Disassembler|نص=تفكيك}} [[لغة تجميع|لغة التجميع]].
 
تتم كتابة الغالبية العظمى من البرامج العملية اليوم [[لغة برمجة عالية المستوى|بلغات عالية المستوى]] أو لغة التجميع. يتم بعد ذلك ترجمة الكود المصدري إلى كود الآله القابل للتنفيذ من خلال الأدوات المساعدة مثل [[محول برمجي|المترجم]]، و[[لغة تجميع|المجمع]]، و{{وإووصلة إنترويكي|رابط (حوسبة)|Linker (computing)|نص=الرابط}}، مع الاستثناء المهم للبرامج [[لغة مفسرة|المفسرة]]،<ref>مثل النسخ العادية من [[بيسيك]]، خصيصاً اللغات الأولية منه، وأيضاً [[سمول توك]]، [[ماتلاب]]، [[بيرل]]، [[بايثون]] [[روبي (لغة برمجة)|روبي]] واللغات ذات الغرض الخاص الأخري أو [[لغة برمجة نصية|لغات البرمجة النصية]]s.</ref> التي لا تترجم إلى كود الآلة. ومع ذلك ، فإن المترجم نفسه، والذي يمكن أن يُرى كمنفذ أو معالج، يقوم بتنفيذ تعليمات الكود المصدري، عادة ما يتكون من كود آلة قابل للتنفيذ مباشرة (تم إنشاؤه من التجميع أو شفرة مصدر [[لغة برمجة عالية المستوى|لغة عالية المستوى]]).
 
إن كود الآلة هو، بالتعريف، أدنى مستوى من تفاصيل البرمجة المرئية للمبرمج، ولكن العديد من المعالجات تستخدم داخليا الكود المصغر أو تحسن تعليمات كود الآلة وتحولها إلى تتابعات من {{وإووصلة إنترويكي|عمليات مصغرة|Micro-operation|نص=العمليات المصغرة}}، وهذا لا يعتبر بشكل عام رمز الآلة في حد ذاته.
 
== مجموعة التعليمات ==
{{mainمفصلة|مجموعة التعليمات}}
كل معالج أو عائلة معالجات لديها مجموعة التعليمات الخاصة بها. التعليمات هي أنماط من [[بت|البتات]] التي تتوافق مع التصميم المادي لأوامر مختلفة إلى الجهاز. وبالتالي، فإن مجموعة التعليمات خاصة بفئة المعالجات التي تستخدم (في الغالب) نفس البنية. غالباً ما تتضمن تصميمات المعالج اللاحقة أو المشتقة كل تعليمات المعالجات السابقة وربما تضيف تعليمات إضافية. من حين لآخر، سيؤدي التصميم التالي إلى إيقاف أو تغيير معنى بعض تعليمات التعليمات البرمجية (عادةً لأنها مطلوبة لأغراض جديدة)، مما يؤثر على توافق التعليمات البرمجية إلى حد ما؛ حتى المعالجات المتوافقة تمامًا تقريبًا قد تظهر سلوكًا مختلفًا بعض الشيء لبعض التعليمات، ولكن نادرًا ما تكون هذه مشكلة. قد تختلف الأنظمة أيضًا في التفاصيل الأخرى، مثل ترتيب الذاكرة أو أنظمة التشغيل أو [[ملحقات (حاسوب)|الأجهزة الطرفية]]. نظرًا لاعتماد البرنامج على هذه العوامل بشكل طبيعي، لن تعمل الأنظمة المختلفة عادةً على نفس كود الآلة، حتى في حالة استخدام نفس نوع المعالج.
 
قد تحتوي مجموعة التعليمات الخاصة بالمعالج على كافة التعليمات من نفس الطول، أو قد يكون لها تعليمات متغيرة الطول. تختلف كيفية تنظيم الأنماط اختلافًا كبيرًا مع البنية المحددة، وغالبًا أيضًا مع نوع التعليمة. تحتوي معظم التعليمات على واحد أو أكثر من حقول [[كود العملية|كود التشغيل]] التي تحدد نوع التعليمة الأساسية (مثل الحساب، والعمليات المنطقية، و{{وإووصلة إنترويكي|تفرع (علوم الحاسب)|Branch (computer science)|نص=القفز}}، وما إلى ذلك) والتشغيل الفعلي (مثل إضافة أو مقارنة) والحقول الأخرى التي قد تعطي نوع [[معامل حسابي|المعامل]]، أو {{وإووصلة إنترويكي|وضع العنونة|Addressing mode}}، أو موازنة و تسجيل العناوين، أو القيمة الفعلية نفسها (تسمى هذه المعاملات المستمرة الواردة في التعليمة بـ ''المعاملية'' أو instantiates).<ref>{{citeمرجع webويب|urlالمسار=http://programmedlessons.org/AssemblyTutorial/Chapter-11/ass11_2.html|titleالعنوان=Immediate Operand|authorالمؤلف=Bradley Kjell; kjell at ieee dot org|publisherالناشر=| مسار الأرشيف = http://web.archive.org/web/20160419001406/http://programmedlessons.org/AssemblyTutorial/Chapter-11/ass11_2.html | تاريخ الأرشيف = 19 أبريل 2016 }}</ref>
 
ليس كل الآلات أو التعليمات الفردية لها معاملات صريحة. تحتوي {{وإووصلة إنترويكي|تراكم (حوسبة)|Accumulator (computing)|نص=الآلة المراكمة}} على مُجمّع مدمج يسفر عن تراكم ضمني لمعظم التعليمات الحسابية. تشتمل المعماريات الأخرى (مثل 8086 و عائلة x86) على إصدارات من تراكمات التعليمات الشائعة، مع اعتبار جهاز التراكم كأحد السجلات العامة من خلال إرشادات أطول. يحتوي {{وإووصلة إنترويكي|جهاز مكدس|Stack machine|نص=الجهاز المكدس}} على معظم أو كافة المعاملات الخاصة به على مكدس ضمني. غالبًا ما تحتوي تعليمات الأغراض الخاصة أيضًا على معاملات صريحة (على سبيل المثال، تعمل وحدة المعالجة المركزية في بنية x86 على كتابة القيم في أربعة سجلات للمقصد الضمني). هذا التمييز بين المعاملات الصريحة والضمنية مهم في مولدات الكود، خاصة في أجزاء تخصيص المسجل وتتبع النطاق الحي. يمكن لمُحسِّن الشفرة الجيد أن يتتبع المعامِلات الضمنية والصريحة التي قد تسمح {{وإووصلة إنترويكي|طي مستمر|Constant folding|نص=بالانتشار المستمر}} على نحو متكرر، مع {{وإووصلة إنترويكي|طي مستمر|Constant folding}} للمسجلات (مسجل يُنسب نتيجة تعبير ثابت يتم تحريره باستبداله بذلك الثابت) وتحسينات أخرى في الكود.
 
== برامج الحاسوب ==
سميت برامج [[حاسوب|الحاسوب]] بهذا الاسم لتمييزها عن [[عتاد الحاسوب|مكونات جهاز الحاسوب"الهارد وير"]] والتي تشمل ما يُعرف باسم [[لغة الآلة]]،الآلة، "البرمجيات" عبارة عن سلسلة مرتبة من التعليمات .
 
وعادةً ما تكون هذه التعليمات مكتوبة [[لغة برمجة عالية المستوى|بلغة برمجة عالية المستوى]] يمكن للإنسان التعامل معها بسهولة وكفاءة وهي أقرب إلى لغة البشر الطبيعية من اللغة البرمجية التي يفهمها جهاز الحاسب وهي [[لغة الآلة]] (Machine Language).
 
ويتم تحويل جميع الجمل البرمجية المكتوبة بلغات برمجة عالية المستوى وتنفيذها جملة جملة باستخدام [[المفسر]] (Interpreter) أو تنفيذها دفعة واحدة باستخدام [[محول برمجي|المترجم]] Compiler.
 
والشفرة الناتجة من هذا التحويل يُطلق عليها [[لغة الآلة]] Machine Language أو شفرة الهدف Object Code. يمكن أيضًا كتابة البرامج باستخدام لغة [[Assembly|الأسيمبلي]](Assembly)- وهي - عبارة عن ترميز للغة البرمجية التي يفهمها الحاسب باستخدام الأحرف الهجائية الإنجليزية. هذا ويجب تحويل لغة Assembly إلى اللغة البرمجية التي يفهمها الحاسب باستخدام أداة المجمـِّع Assembler{{لغات البرمجة حسب المستوى}}
 
== مراجع ==
سطر 31:
 
== مزيد من الإطلاع ==
* {{citeمرجع bookكتاب
| firstالأول = هينيسي
| lastالأخير = جون
| authorlinkوصلة المؤلف = جون هينيسي
|author2المؤلف2=ديفيد باترسون
|authorlink2وصلة المؤلف2=ديفيد باترسون (عالم)
| titleالعنوان = تنظيم وتصميم الكمبيوتر. واجهة العتاد/البرامج.
| publisherالناشر = مورغان كاوفمان الناشرين
| isbn = 1-55860-281-X
}}
* {{citeمرجع bookكتاب
| firstالأول = تانينباوم
| lastالأخير = أندرو
| authorlinkوصلة المؤلف = أندرو تانينباوم
| titleالعنوان = تنظيم الكمبيوتر المنظم
| publisherالناشر = برنتيس هول
| isbn = 0-13-020435-8
}}
* {{citeمرجع bookكتاب
| firstالأول =بروكشير
| lastالأخير = جلين
| titleالعنوان = علوم الكمبيوتر: نظرة عامة
| publisherالناشر = أديسون ويسلي
| isbn = 0-321-38701-5
}}
سطر 60:
 
{{شريط بوابات|برمجة الكمبيوتر}}
 
[[تصنيف:لغة الآلة]]
[[تصنيف:برمجة]]