زبان اسمبلی اکس۸۶ gcf and lcm assembly

زبان اسمبلی x86 خانواده ای از زبان‌های اسمبلی دارای سازگاری عقبرو است که حتی با Intel 2088 که در آوریل ۱۹۷۲ معرفی شد، تا حدودی سازگاری دارد. زبان‌های اسمبلی x86 برای تولید کد هدف برای پردازنده‌های کلاس x86 استفاده می‌شوند. زبان اسمبلی x86 همانند تمام زبان‌های اسمبلی، از یادیارهای کوتاه استفاده می‌کند تا دستورالعمل‌های اساسی را که CPU در یک کامپیوتر می‌تواند درک و دنبال کند، نشان دهد. کامپایلرها گاهی هنگام ترجمهٔ یک برنامه سطح بالا به کد ماشین، کد اسمبلی را به عنوان یک مرحله میانی تولید می‌کنند.به عنوان یک زبان برنامه‌نویسی، اسمبلی به صورت خاص ماشین و سطح پایین است. زبان‌های اسمبلی به‌طور معمول برای برنامه‌های کاربردی دقیق و زمان بحرانی مورد استفاده قرار می‌گیرند مانند سیستم‌های نهفتهٔ بلادرنگ یا هسته‌های سیستم عامل و درایورهای دستگاه.تاریخچهاینتل ۸۰۸۶ و ۸۰۸۸ اولین پردازنده‌هایی بودند که یک مجموعه دستورالعمل داشتند که در حال حاضر معمولاً آن را x86 می‌نامند.این پردازنده‌های ۱۶ بیتی که تکامل یافتهٔ نسل قبلی پردازنده‌های ۸ بیتی مانند ۸۰۸۰ بودند، ویژگی‌ها و دستورالعمل‌های بسیاری را از آن‌ها به ارث برده و برای نسل ۱۶ بیتی توسعه داده‌اند. ۸۰۸۶ و ۸۰۸۸ هر دو از گذرگاه آدرس ۲۰ بیتی و ثبات‌های داخلی ۱۶ بیتی استفاده می‌کردند؛ اما تفاوت‌هایی نیز داشتند، برای مثال، در حالی که ۸۰۸۶ دارای یک گذرگاه داده ۱۶ بیتی بود، ۸۰۸۸، به عنوان یک گزینهٔ کم هزینه تر برای برنامه‌های کاربردی نهفته و کامپیوترهای کوچک، از یک گذرگاه دادهٔ ۸ بیتی بهره می‌برد.زبان اسمبلی x86 انواع مختلفی از CPUها را پوشش می‌دهد از جمله: پردازنده‌های اینتلی مانند 80186، 80188، ۸۰۲۸۶، ۸۰۳۸۶، 80486، پنتیوم، پنتیوم پرو و غیره و همچنین پردازنده‌های غیر اینتلی AMD و Cyrix مانند پردازنده‌های 5x86 و K6 و NEC V20 (هرچند این پردازنده‌ها غالباً سازگار با اینتل هستند، دستورالعمل‌هایی را که ممکن است به سختی بخشی از زبان اسمبلی x86 در نظر گرفته شود را به مجموعه دستورالعمل‌های خود اضافه کرده‌اند؛ همانند دستورالعمل‌هایی که Zilog به Z80 اضافه کرد) اصطلاح x86 برای هر پردازنده ای که می‌تواند زبان اسمبلی اصلی را اجرا کند، مورد استفاده قرار می‌گیرد.مجموعهٔ جدید دستورالعمل‌های x86، یک ابرمجموعه از دستورالعمل‌های ۸۰۸۶ و مجموعه ای از افزونه‌های اضافه شده به این دستورالعمل هاست که از میکروپروسسور اینتل ۸۰۰۸ آغاز شد. سازگاری عقبرو باینری تقریباً کاملی میان تراشهٔ اینتل از ۸۰۸۶ تا نسل فعلی پردازنده‌های x86 وجود دارد، اگر چه برخی از استثنائات وجود دارند. در عمل، استفاده از دستورالعمل‌هایی که روی هر پردازنده ای از اینتل ۸۰۳۸۶ یا پنتیوم به بعد اجرا شود، رایج است. اما در سال‌های اخیر، سیستم عامل‌های مختلف و برنامه‌های کاربردی نرم‌افزار به نیاز به پردازنده‌های مدرن تر پیدا کرده‌اند، پردازنده‌هایی که دست کم از تعدادی از افزونه‌هایی که به مجموعهٔ دستورالعمل‌ها اضافه شده‌اند، پشتیبانی کنند. (به عنوان مثال ... SSE2 / SSE3).یادیارها و آپ کد‌هاهر دستورالعمل مونتاژ x86 با یک یادیار نشان داده می‌شود که اغلب با یک یا چند عملوند ترکیب شده‌است و به یک یا چند بایت به نام آپ کد ترجمه می‌شود؛ به عنوان مثال دستور NOP به 0x90 ترجمه می‌شود و دستور HLT به 0xF4 ترجمه می‌شود. آپ کد‌های بالقوه ای وجود دارند که هیچ یادیار مستندی برای آن‌ها وجود ندارد. پردازنده‌های مختلف ممکن است این آپ کد‌ها را به‌طور متفاوتی از یکدیگر تفسیر کنند، برنامه ای که با استفاده از آن‌ها ایجاد شود، متناقض رفتار خواهد کرد یا حتی در برخی از پردازنده‌ها یک استثنا ایجاد می‌کند. این آپ کد‌ها اغلب در مسابقه‌های کدنویسی به عنوان راهی برای کوچکتر، سریع تر و ظریف تر کردن کد استفاده می‌شوند یا تنها نشان دهندهٔ مهارت کدنویس می‌باشند.زبان اسمبلی x86 دارای دو شاخهٔ اصلی نحو است: نحو اینتل، که در اصل برای مستندسازی پلت فرم x86 استفاده می‌شود، و نحو AT & T استفاده از نحو اینتل در دنیای MS-DOS و ویندوز غالب است و استفاده از نحو AT & T در دنیای یونیکس، از آنجایی که یونیکس در آزمایشگاه‌های AT & T Bell ایجاد شده‌است. در اینجا خلاصه ای از تفاوت‌های اصلی میان نحو اینتل و نحو AT & T آمده‌است:gcf and lcm assembly زبان اسمبلی اکس۸۶میرمحمد مهدی ذاکربا تشکر