مشاهده نسخه کامل
: راهنمای اسمبلر
درود
متاسفانه جای دیگری برای پرسید ن سوال پیدا نشد
من یک مقاله ای خودنم و میگه برخی دستوران در زبان اسمبلی به زبان ماشین تبدیل نمیشوند و اونها صرفا به عنوان راهنما اسمبلر عمل میکنند
مثلا برجسب TEST برای من قابل فهمیدن هست و برای سخت افزار نیست. پس هر کاری میکنه و هر عملی انجام میده باید به زبان ماشین یعنی 01 تبدیل بشه تا سخت افزار بفهمه.
شاید منظورش این هست که در سطح همان کامپایلر این کلمه میمونه و برای کامپایلر تعریف شده از پیش هست؟ درسته؟ پس اگر از پیش تعریف شده باشه برای کامپایلر و برای کامپایلر دارای معنی باشه نیاز به تدبیل به زبان ماشین نیست؟
نه فقط در اسمبلر بلکه در تمامی کامپایلرها در هر زبانی که می خواهید حساب کنید این قضیه وجود دارد. یکسری فرمان، ماکرو، تابع، دستور و ... وجود دارند که از پیش برای کامپایلر تعریف شده اند. در واقع با آن ها با کامپایلر صحبت می کنید نه اینکه در برنامه قرار گیرند و در اختیار Linker قرار گیرند تا تبدیل به فایل خروجی شوند.
در خانواده C این ارتباط با کامپایلرها عموما با واژگان آغاز شونده # می باشند.نظیر #ifdef.
در برخی کامپایلرهای سخت افزار محور نظیر میکروکنترلر ها حتی آدرس بندی هم وجود دارد مثلا فلان تابع برود در فلان نقطه ی حافظه.
یا در همین نوع کامپایلرها مثلا @ در عبارات به معنای قرار گیری در نقطه ای خاص با آدرس دهی مستقیم است.
عموما کامپایلرها راهنما هایی دارند که فقط به شرح موارد ارتباط با کامپایلرها می پردازند.
ارتباط با لینکر ها نیز وجود دارد که اکثرا توسط parameter در خط فرمان ساخت لینک ایجاد می شود.
موفق باشید.
نه فقط در اسمبلر بلکه در تمامی کامپایلرها در هر زبانی که می خواهید حساب کنید این قضیه وجود دارد. یکسری فرمان، ماکرو، تابع، دستور و ... وجود دارند که از پیش برای کامپایلر تعریف شده اند. در واقع با آن ها با کامپایلر صحبت می کنید نه اینکه در برنامه قرار گیرند و در اختیار Linker قرار گیرند تا تبدیل به فایل خروجی شوند.
در خانواده C این ارتباط با کامپایلرها عموما با واژگان آغاز شونده # می باشند.نظیر #ifdef.
در برخی کامپایلرهای سخت افزار محور نظیر میکروکنترلر ها حتی آدرس بندی هم وجود دارد مثلا فلان تابع برود در فلان نقطه ی حافظه.
یا در همین نوع کامپایلرها مثلا @ در عبارات به معنای قرار گیری در نقطه ای خاص با آدرس دهی مستقیم است.
عموما کامپایلرها راهنما هایی دارند که فقط به شرح موارد ارتباط با کامپایلرها می پردازند.
ارتباط با لینکر ها نیز وجود دارد که اکثرا توسط parameter در خط فرمان ساخت لینک ایجاد می شود.
موفق باشید.
درست می فرمائید.
مثلا کلمه کلیدی for که در کامپایلر پیاده شده است . به زبان اسمبلی و سپس زبان ماشین ترجمه نمیشه؟
خوب ما میدونیم for چیه و کامپایلر - بلاخره نیاز به پرداش داره در CPU . نداره؟
درست می فرمائید.
مثلا کلمه کلیدی for که در کامپایلر پیاده شده است . به زبان اسمبلی و سپس زبان ماشین ترجمه نمیشه؟
خوب ما میدونیم for چیه و کامپایلر - بلاخره نیاز به پرداش داره در CPU . نداره؟
حلقه نیاز به ترجمه و پردازش داره و جزو اون دسته از دستورات قرار نمیگیره
مثلا ماکرو define که یه ثابت رو تعیین میکنه این دستور پیش از کامپایل مقدار که به ثابت نسبت دادیم رو به جای نام ثابت مینویسه وسپس کامپایلر شروع به ترجمه میکنه
همچنین در اسمبلر اسمبل کردن دستورات در دو مرحله انجام میشه مرحله اول جای گذاری آدرس ها به جای متغییر ها و ...(که اون دستوراتی که به زبان ماشین ترجمه نمیشن در همین مرحله پردازش میشن)
و در مرحله دوم کدها تبدیل به زبان ماشین میشن
همان مثال for شما، یک حلقه، یک شمارش گر و یک بررسی کننده ی شرط. خوب این for تقریبا معادل چند خط کد ساده در اسمبلی می شود.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اصلا ویژگی زبان های سطح بالاتر در همین است یعنی یک واسطی که نگارش های دستوری اصلی را تبدیل به کد ماشین کند حالا در همین راستا هم یکسری فرمان برای ارتباط با خود این واسط نیز وجود دارد.
موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.