PDA

View Full Version : سوال: محدودیت های C که باعث میشه بریم سراغ اسمبلی



a47b1b590cfe48fd8f356c65
دوشنبه 14 اردیبهشت 1394, 17:39 عصر
سلام دوستان ، خسته نباشین ،
چه کاری رو نمی شه با C انجام داد که با اسمبلی میشه ؟ به چه دلیل شما دارین اسمبلی یاد میگیرین؟
برای کدام یک از این موارد c کافی نیست؟ ساختن 1- آنتی ویروس 2-کامپایلر 3-سیستم عامل
در هر یک از موارد فوق چرا باید اسمبلی یاد گرفت؟
خود اسمبلی اصلا با چی درست شده؟
دوستان ببخشید اگه سوالات احمقانه می پرسم ،
اگه یه توضیحی به زبان ساده بهم بدین خیلی در حقم لطف کردین
با سپاس فراوان

masoud.8086
سه شنبه 15 اردیبهشت 1394, 11:26 صبح
سلام
ابتدا باید بگم در مورد سوالات شما خیلی جای حرف و بحث وجود داره اما سعی میکنم خلاصه وار توضیح بدم اول باید بگم که c ی زبان سطح بالاس و هر چی زبان سطش بالاتر میره سنگین تر و به ربان محاروه (ربان انشان) نردیک تر میشه و این باعث میشه حجم برنامه برای سیستم بالا و همچنین سرعت اجراش پایین بیاد ولی در اسمبلی این موارد کلا برعکس هست یعنی دوری از زبان محاوره حجم کم برنامه و سرعت عالی..مغمولا برای کار با سخت افزار از اسمبلی استفاده میکنن بخاطر مواردی که بالا عرض کردم..در مورد انتی ویروس و مواردی که شما فرمودید باید گفت با c نمیتوان تمام برنامه اونا رو نوشت ..در سیستم عامل به خاطر اینکه باید برنامه ها رو داخل حافظه های کم جا داد همچنین سرعت بالا معمولا هسته سیستم عامل رو با اسمبلی مینویسن و بخاطر ارتباط راحت با سخت افزار.و همچنین نوشتن درایور..در مورد اتنی ویروس چون برنامه باید بره برای پیدا کردن ویروس ساختار برنامه ها رو چک کنه و کارشونو بفهمه . این کار بسیار وقت گیر است زمان خیلی مهمه پس باید از اسمبلی کمک گرفت که سرعت بالای داره و همچنین در مورد کامپایلر .. خود زبان اسمبلی از زبان ماشین تشکیل شده یعنی از دستورات داخل cpu که اونم از هزاران مدار درست شده و عملیات های مختلفو انجام میدن در واقع با هر دستور اسمبلی ابتدا دستور به کد ماشین تبدیل میشه و اون کد ماشین داخل cpu باعث انجام کار مدارهای که مربوط به اون دستور هست میشه.خود اسمبلی زبان پایه ای کامپیوتر است یعنی شما هر برنامه ای به هر زبانی که نوشته باشی در نهایت به زبان اسمبلی و ماشین تبدیل میشه چون فقط سیستم این زبان رو متوجه میشه..

xman_1365_x
چهارشنبه 16 اردیبهشت 1394, 00:58 صبح
چه کاری رو نمی شه با C انجام داد که با اسمبلی میشه ؟
آقا وحید در ارتباط با سوالاتی که کردین قبل از اینکه نظرمو بگم، نمیدونم تا چه اندازه در ارتباط با مواردی که مطرح کردین مطالعه داشتین، اما بنظرم باید بدونید هدفتون چیه بعد دنبال استفاده از ابزارش برید، صرف پرسیدن هر سوالی فکر نمیکنم منفعت خاصی برای آدم داشته باشه
کدی که زبان سی(سی زبانی میانی میباشد!) تولید میکنه تفاوت کمی با اسمبلی داره و میشه گفت بیشتر در حجم متفاوت هستن(قابلیت اجرای دستور العمل های ویژه رو هم میشه راحت با inline انجام داد و...)
پس معمولا جایی استفاده میشه که حجم پایین ملاک هست از نظر سرعت هم معمولا با بهینه سازی هایی که کامپایلر انجام میده در این مورد هم تفاوت اندک هست!(بهینه سازی کد، سرعت اجرا یا ترکیب...)

به چه دلیل شما دارین اسمبلی یاد میگیرین؟
اینکه دیگران اسمبلی یاد میگیرن، دسته اول در رشته کامپیوتر کتابهایی برای آشنایی با پردازنده، معماری سیستم و قطعات الکترونیک تدریس میشه که به اجبار باید یاد گرفت
با هدف اینکه برای اینکه در هر کاری باید محیط کار و ابزار هارو شناخت تا بشه از اون وصیله بهترین استفاده رو داشت، دسته دوم هم بخاطر علاقه و لذت و دسته سوم بدلیل کاربرد های امروزی این زبان در دیگر محصولات و ابزار ها و ساختن پول از دانش



برای کدام یک از این موارد c کافی نیست؟ ساختن 1- آنتی ویروس 2-کامپایلر 3-سیستم عامل

در هر سه این موارد بدلیل ماهیت سیستمی بودن و سر و کله زدن با پردازنده و سخت افزار های دیگه مجبورید با اسمبلی آشنا باشید برای مثال:

آنتی ویروس ها که بحثشون فرق میکنه و پایشون شناخت اسمبلی و بایت کد ها هست تا هم برای تشخیص بدافزار ها و... استفاده کنند و هم معماری پردازنده و سیستم عامل رو بدونند تا نقاط ضعفشو بدونند و از امکاناتش استفاده کنند تا بدافزار هارو تشخیص بدن برای مثال: تشخیص های ایستا و پویا بر همین پایه و اساس چیده شده
سیستم عامل هم که از دیگر مواردی که ذکر کردین نیاز بیشتری به درک معماری پردازنده و سیستم داره تا مثلا بتونید سیستم عاملی بنویسید که از تمام امکانات پردازنده استفاده کنه مثلا تمام رینگ ها، تمام واحد های پیشرفته و...
کامپایلر هم که چون میخواد زبان سطح بالا رو تبدیل به ابجکت یا همون بایت کد ها کنه که قابلیت اجرا در ماشین رو داشته باشند، پیش نیازش دانش به این زبان هست.

در هر یک از موارد فوق چرا باید اسمبلی یاد گرفت؟
در حرفام اینو هم تقریبا گفتم

خود اسمبلی اصلا با چی درست شده؟
هر پردازنده که تولید میکنند، یک ISA هم براش درست میکنند تا با اون بایت کد ها که عدد هستن! کار خاصی رو انجام بده، مثلا عددی رو جمع کنه و...
حالا اسمبلی یا زبان سمبلیک هر دستورش معادل یکی از همین بایت کدها هست تا انسان بتونه حفظشون کنه و برای نوشتن و خطایابیش راحت تر شه نه مثل اولین کامپیوتر ها و پانچ کارت ها یک سری صفر و یک ببینید و زمان طولانی برای این مورد صرف کنید

دوستان ببخشید اگه سوالات احمقانه می پرسم ،
اگه یه توضیحی به زبان ساده بهم بدین خیلی در حقم لطف کردین
سوال کردن بد نیست، نپرسیدن عیبه
امیدوارم پاسخم کمکی کرده باشه، اگر سوالی بود بپرسید
موفق باشید