وبلاگی برای دوست‌داران کامپیوتر
زبان اسمبلی ۲
چهارشنبه ۱٥ آذر ۱۳۸٥ ساعت ٦:٤٥ ‎ب.ظ | نوشته ‌شده به دست علی اسماعیلی | ( نظرات )
دستورالعمل هاي پردازنده
در پايين ترين سطح عملكرد، تمام پردازنده هاي كامپيوتر ( مايكروكامپيوتر ها، ميني كامپيوتر ها و مين فريم ها) داده ها رو بر اساس كد هاي دودويي پردازش ميكنن كه توسط سازنده داخل چيپ پردازنده قرار داده ميشه. اين كد ها هستن كه تعريف ميكنن كه پردازنده چه كاري رو با استفاده از داده هايي كه برنامه نويس به اون داده، بايد انجام بده. اين كدهاي از پيش تعيين شده رو كدهاي دستورالعمل ميگن. پردازنده هاي مختلف، مجموعه دستورالعمل هاي مختلف دارن. چيپ هاي پردازنده معمولاً با تعداد و نوع كد هاي دستورالعملي كه پشتيباني ميكنن، طبقه بندي ميشن.
با اينكه هر پردازنده اي براي خودش مجموعه كد هاي دستورالعمل خاصي داره، ولي تمام پردازنده ها رفتار يكساني با برنامه ها دارن. در اين قسمت توضيح ميدم كه پردازنده ها چطوري با دستورالعمل ها برخورد ميكنن و براي يه پردازشگر فرضي، كد هاي دستورالعمل چه شكلي هستن.
مديريت كد دستورالعمل
وقتي يه پردازنده كار ميكنه، كد هاي دستورالعمل كه توي حافظه ذخيره شدن رو ميخونه. هر مجموعه كد دستورالعمل ميتونه شامل يك يا چند بايت داده باشه كه به پردازنده دستور ميده تا كار خاصي رو انجام بده. با خونده شدن هر كد دستورالعمل از حافظه، داده هاي مورد نياز دستورالعمل هم در حافظه ذخيره شده و خونده ميشه. بايت هاي حافظه اي كه حاوي كد هاي دستورالعمل هستن تفاوتي با بايت هاي حاوي داده هاي مورد استفاده ي پردازنده ندارن.

براي تفاوت قائل شدن بين كد هاي داده و كد هاي دستورالعمل، اشاره گر هاي خاصي براي كمك به پردازنده براي نگهداري آمار اينكه كجاي حافظه كد دستورالعمله و كجاش كد داده، بكار ميرن. اين كار توي شكل 1-1 نشون داده شده.



شكل 1-1







اشاره گر داده براي كمك به پردازنده براي كمك به پردازنده بوجود اومده. پردازنده اينطوري ميفهمه كه كدوم كدهاي دستورالعمل قبلاً پردازش شدن و كدوم كد ها توي صف پردازشن. البته كدهاي دستورالعمل خاصي وجود داره كه ميتونن جاي اشاره گر دستورالعمل رو عوض كنن و مثل پرش به يك نقطه ي خاص از برنامه عمل كنن.
درست به همين ترتيب، اشاره گر داده به پردازنده كمك ميكنه تا بفهمه محوطه ي داده ها توي حافظه از كجا شروع ميشن. اين محوطه بنام پشته معروفه. با قرار گرفتن عناصر داده اي جديد توي پشته، اشاره گر توي حافظه به سمت پايين حركت ميكنه. با خونده شدن داده ها، اشاره گر به سمت بالا حركت ميكنه.
هر كد دستورالعمل ميتونه حاوي يك يا چند بايت اطلاعات براي پردازنده باشه. براي مثال اين كد ها رو در نظر بگيريد : C7 45 FC 01 00 00 00
اين كد ها به پردازنده هاي سري IA-32 اينتل ميگن كه عدد 1 رو توي موقعيت آفستي از حافظه كه توسط ثبات پردازنده تعريف ميشه، بارگذاري كنه. نگران چند تا كلمه ي نا آشنا نباشيد. به تعريف اونا هم ميرسيم. كد دستورالعملي كه ديديد، چندين بخش اطلاعات رو تو خودش داشت كه به وضوح تعيين ميكنن كه پردازنده بايد چه كاري رو انجام بده. بعد از اينكه پردازنده پردازش يكي از مجموعه كد هاي دستورالعمل رو تموم كرد، كد بعدي رو از حافظه ميخونه. دستورالعمل ها بايد با قالب و ترتيب مناسب توي حافظه قرار بگيرن تا پردازنده هم همگام با نياز برنامه كار كنه.
هر دستورالعمل بايد داراي 1 بايت بنام كد عملياتي (آپكد به اختصار) باشه. آپكد تعيين كننده ي عمليه كه پردازنده بايد انجام بده. هر خانواده از پردازنده ها آپكد هاي از پيش تعريف شده خودشونو دارن كه تمام عملكرد هاي قابل انجام رو نشون ميدن. توي قسمت بعدي ميبينيم كه آپكد ها چطور در ريزپردازنده هاي سري IA-32 اينتل ساختار دهي شدن. اين نوع آپكد ها رو چون خيلي معمولن تو كل مجموعه بكار ميبريم.

برچسب‌ها:

 
لینک دوستان
دیگر موارد