وبلاگ دانشجویان رشته کامپیوتر دانشکده سما مسجدسلیمان
| ||
|
اسمبلرها از دهه ۱۹۵۰ مورد استفاده قرار گرفتند و نوشتن آنها بسیار راحتتر از نوشتن متجرمها برای زبانهای برنامهنویسی سطح بالا است بطوریکه هر دستور یادیاری و هر آدرس حالت ترکیبی این زبان مستقیماً به یک آپکد زبان ماشین تبدیل میشود. اسمبلرهای جدید، به طور خاص برای معماریهای ریسک، مانند اسپارک و پاور، هممانند معماری ایکس۸۶ و ایکس۸۶-۶۴، با بهینهسازی زمانبندی دستورالعملها باعث استفاده کارآمد از خط لولۀ واحد پردازش مرکزی میشوند. برخی از رایجترین اسمبلرهای معماری ایکس۸۶ عبارتند از:
تعداد گذرها[ویرایش]دو نوع اسمبلر بر اساس تعداد گذرها از روی کد منبع برای تولید برنامۀ قابل اجرا وجود دارد:
هدف اصلی در استفاده از اسمبلرهای یکبار-گذر، سرعت اسمبل کردن بود، زیرا در گذر دوم به برگرداندن و بازخوانی نوار یا کارت پانچ، که در گذشته برای ذخیرهسازی کدها استفاده میشدند، نیاز بود. این مشکل بعدها با وجود کامپیوترهای جدید برطرف شد. مزیت اسمبلرهای چندبار-گذر این است که در نبود خطاها در کد آبجکت، فرایند پیونددهی سریعتر انجام میشود. اسمبلرهای سطح-بالا[ویرایش]اسمبلرهای پیچیدهتر سطح-بالا انتزاعهای زبانی زیر را فراهم میکنند:
زبان اسمبلی[ویرایش]برنامهای که به زبان اسمبلی نوشته میشود شامل مجموعهای از دستورالعملهای پردازنده (یادیارها)، شبه-دستورها (به انگلیسی: Pseudo-instructions)، کامنتها و دادهها است. دستورهای زبان اسمبلی معمولاً از یک آپکد و سپس فهرستی از دادهها، آرگومانها و یا پارامترها تشکیل شدهاند و توسط اسمبلر به دستورهای زبان ماشین ترجمه و به حافظه منتقل میشوند تا اجرا شوند. برای مثال، دستور زیر به پردازندۀ معماری ایکس۸۶/آیای-۳۲ میگوید که یک مقدار ثابت ۸ بیتی را به یک ثبات منتقل کند. کد باینری این دستور
این کد باینری را میتوان با تبدیل به مبنای ۱۶ کمی خواناتر کرد:
در اینجا MOV AL, 61h ; Load AL with 97 decimal (61 hex)
برخی زبانهای اسمبلی ممکن است از دستورهای مشابه آپکد اینتل MOV AL, 1h ; Load AL with immediate value 1
MOV CL, 2h ; Load CL with immediate value 2
MOV DL, 3h ; Load DL with immediate value 3
دستور MOV EAX, [EBX] ; Move the 4 bytes in memory at the address contained in EBX into EAX
MOV [ESI+EAX], CL ; Move the contents of CL into the byte at address ESI+EAX
در هر حالت، دستور تبدیل زبان اسمبلی به زبان ماشین وظیفۀ اسمبلر است و عکس این عمل تا حدی توسط دیاسمبلر امکانپذیر است. برخلاف زبانهای برنامهنویسی سطح بالا، ارتباط یک به یکی بین دستورهای زبان اسمبلی و دستورالعملهای زبان ماشین وجود دارد. با این حال، در برخی موارد، یک اسمبلر ممکن است شبهدستوراتی (به انگلیسی: Pseudoinstructions) را به کار بگیرد (اساساً ماکروها) که به چند دستورالعمل زبان ماشین تبدیل میشود تا پاسخگوی نیازهای رایج باشد. هر معماری کامپیوتر زبان ماشین مختص به خود را داراست. کامپیوترها در تعداد و نوع دستورهای قابل استفاده، تعداد و اندازۀ ثباتها و نحوۀ انبارش دادهها با یکدیگر تفاوت دارند. با اینکه کامپیوترهای همه منظوره اساساً قادر به انجام کارکردهای مشابه هستند ولی این کار را با روشهای گوناگونی انجام میدهند؛ بنابراین زبان اسمبلی مربوط به آنها نیز این تفاوتها را منعکس میکند. مجموعههای متعددی از یادیارها و یا دستورهای زبان اسمبلی ممکن است برای یک مجموعه دستورالعمل واحد وجود داشته باشد، که به طور معمول در برنامههای اسمبلی مختلفی نمونهسازی میشوند. در این موارد، رایجترین آنها معمولاً نمونهای است که توسط کارخانۀ سازنده عرضه میشود یا در مستندات آنها استفاده شده است. نظرات شما عزیزان: [ چهار شنبه 10 مهر 1392
] [ 10:26 ] [ بهنام نصرالله پور ]
|
|
[ قالب وبلاگ : ایران اسکین ] [ Weblog Themes By : iran skin] |