لغة البرمجة منخفضة المستوى

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

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

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

فعلى سبيل المقارنة، تعزل لغة البرمجة عالية المستوى دلالات التنفيذ في معمارية الحاسوب عن خصائص البرنامج مما يسهّل عملية التطوير، وتقسم اللغات منخفضة المستوى إلى قسمين: الجيل الأول والجيل الثاني.

الجيل الأول[عدل]

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

مثال: إحدى دوال لغة الآلة x86 التي تعمل باستخدام 32 بت لحساب رتبة ن من متتالية فيبوناتشي:

8B542408 83FA0077 06B80000 0000C383
FA027706 B8010000 00C353BB 01000000
B9010000 008D0419 83FA0376 078BD98B
C84AEBF1 5BC3

الجيل الثاني[عدل]

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

مثال: نفس البرنامج المذكور سابقا والمستخدم في حساب متتالية فيبوناتشي، وقد كتب هذه المرة باستخدام لغة التجميع x86 باستخدام تركيب MASM.

fib:
    mov edx, [esp+8]
    cmp edx, 0
    ja @f
    mov eax, 0
    ret
    
    @@:
    cmp edx, 2
    ja @f
    mov eax, 1
    ret
    
    @@:
    push ebx
    mov ebx, 1
    mov ecx, 1
    
    @@:
        lea eax, [ebx+ecx]
        cmp edx, 3
        jbe @f
        mov ebx, ecx
        mov ecx, eax
        dec edx
    jmp @b
    
    @@:
    pop ebx
    ret

انظر أيضا[عدل]