ورود

View Full Version : مبتدی: کامپایلرای اسمبلی با چی ساخته شدن؟



Beginner2013
جمعه 01 اردیبهشت 1391, 14:54 عصر
با سلام و خسته نباشید.
ممکنه سوالم خنده دار به نظر برسه اما گفتم از قدیم گفتن ندانستن عیب نیست..،من شنیدم که کامپایلر ها زباه های دیگه با assembly نوشته شدن یا فلان زبان با assembly درست شده،پس خود اسمبلی با چی درست شده.
با تشکر.

anotheruser
جمعه 01 اردیبهشت 1391, 16:40 عصر
با سلام و خسته نباشید.
ممکنه سوالم خنده دار به نظر برسه اما گفتم از قدیم گفتن ندانستن عیب نیست..،من شنیدم که کامپایلر ها زباه های دیگه با assembly نوشته شدن یا فلان زبان با assembly درست شده،پس خود اسمبلی با چی درست شده.
با تشکر.
آخ که حرف دل منو زدی.کاش یکی بود میگفت جریان چی به چیه؟

en-keramat
جمعه 01 اردیبهشت 1391, 17:48 عصر
تا جای که من اطلاع دارم زبانهای مثل اسمبلی را با زبان ماشین (Machine language ) که بر اساس اعداد دودویی ( صفر و یک ها ) هست نوشته اند

IamOverlord
جمعه 01 اردیبهشت 1391, 19:53 عصر
سلام دوستان.
تقریبا هر کامپایلری رو با هر زبانی می شه نوشت. که با این حال به دلایلی با هر زبانی کامپیالر نمی نویسن...
مثلا کامپیالر FASM با Assembly نوشته شده، به همین خاطر سورس کد خودش رو می شه در خودش کامپایل کرد!
زبان Assembly هم همون زبان ماشین هست. فقط برای هر عدد یه اسم گذاشتن و یه کم (فقط یه کم) تزیینش کردن؛ برای مثال می تونی به جای آدرس حافظه، نام متغیر رو بنویسی که براش یه آدرسی در نظر گرفته بشه.
یعنی کامپایلر یه نرم افزاره که باید با نرم افزاری نوشته شده باشه، اون نرم افزار هم همین طور، ... الی آخر. تا می رسیم به جایی که نرم افزار رو بدون استفاده از نرم افزار به سخت افزار می دن. حالا اون نرم افزار اولیه می تونه یه کامپایلر ویا سیستم عامل باشه. از این جا به بعد با این نرم افزار اولیه بقیه ی نرم افزار ها رو می نویسن.
اگه بخواید بیش تر گیر بدین مثل این می شه که بپرسید، دوچرخه رو با چی ساختن؟ ... خوب اون رو با چی ساختن؟ الی آخر...!
فقط مهم اینه که بدونید یه جایی انسان بدون استفاده از نرم افزار، برنامه اش رو به خورد سخت افزار می ده، یعنی به طور سخت افزاری این کار رو انجام می ده.

xman_1365_x
جمعه 01 اردیبهشت 1391, 22:02 عصر
با هر زبان برنامه نویسی میتونید این کارو انجام بدین اما دلایل دیگه مثل قابلیت حمل و اجرا بر روی محیط بدون سیستم عامل میتونه در نوع زبان تاثیر بزاره ، و همینطور نوع زبان بر روی سرعت اسمبل شدن برنامه که البته به موارد دیگه همچون سخت افزار ، اسمبلر با تکز گذر یا دو گذر و نوع الگوریتم و ... وابستگی داره

معمولا از سی و اسمبلی استفاده میشه

موفق باشید

en-keramat
جمعه 01 اردیبهشت 1391, 22:26 عصر
زبانهای برنامه نویسی به سه دسته : سطح بالا ، اسمبلی ، زبان ماشین تقسیم می شوند
تو زبان های سطح بالا هر کدام از زبانها دارای استاندارد گرامری خاصی هستند و همچنین سهولت استفاده ازشون خیلی راحته و خاصیت قابل حمل بودن دارن که میشه روی کامپیوترهای مختلفی اجراشون کرد ، از زبانهای سطح بالا میشه فرترن ، بیسیک ، کوبول ، C ، پاسکال و.. نام برد.
مثلا برای جمع دو مقدار میشه دستور اشو به این صورت نوشت
Price=Cost+Profit
زبان اسمبلی برای مراجعه به داده می توانیم از اسامی توصیفی استفاده کنیم ، اما اعمالی که باید روی داده ها انجام شوند بصورت واضح باید مشخص گردند ف دستور فوق تو اسمبلی به این صورت میشه نوشت
LOAD Cost
ADD Profit
STORE Price
اما زبان ماشین زبان محلی کامپیوتر هستش ، یدین صورت که هر یک از دستورالعمل های زبان ماشین در واقع رشته ای از اعداد دودویی (صفر - یک ) است.
مثال برای نمایش اعداد صحیح به طور مثال عدد27 عدد متناظر اش میشه 1101 ،که برای مشخص کردن یک عمل و سلول یا سلولهای از حافظه می توان از اعداد صفر - یک استفاده کرد ،مثال اسمبلی بالا در زبام ماشین به این صورت میشه نوشت

0010 0000 0000 0100
0100 0000 0000 0101
0011 0000 0000 0110

چیزی که مشخصه کامپیوتر فقط می تونه صفر -یک ها متوجه بشه ،که درک اون برای نویسان مشکله ، تو پیادسازی کامپایلرها هرچه زبان ساخت اش به زبان ماشین نزدیک باشه Performance بهتری داره.

Beginner2013
جمعه 01 اردیبهشت 1391, 22:36 عصر
ببخشید حالا اگه من بخوام اون 3 خط صفر و یک رو که نوشتید یا معادل 0و1 مثال hello world رو اجرا کنم،چیکار باید بکنم؟

xman_1365_x
جمعه 01 اردیبهشت 1391, 22:55 عصر
توضیحاتی در باره زبان برنامه نویسی،اسمبلی و ماشین بود و نامرتبط با سوال اما شما با هر زبانی میتونید ساختار کد ماشین برای هر دستورالعمل رو ایجاد کنید
برای مثال من با اسمبلی 8086 بخشی از اسمبلر رو در این (http://barnamenevis.org/showthread.php?330886-%D8%A8%D8%AE%D8%B4%DB%8C-%D8%A7%D8%B2-%DB%8C%DA%A9-%D8%A7%D8%B3%D9%85%D8%A8%D9%84%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D9%85%D8%A8%D9%84%DB%8C-8086)تاپیک به اشتراک گذاشتم

تو پیادسازی کامپایلرها هرچه زبان ساخت اش به زبان ماشین نزدیک باشه Performance بهتری داره
الزاما خیر حتی اگر با اسمبلی نوشته شده باشه

en-keramat
جمعه 01 اردیبهشت 1391, 23:09 عصر
ببخشید حالا اگه من بخوام اون 3 خط صفر و یک رو که نوشتید یا معادل 0و1 مثال hello world رو اجرا کنم،چیکار باید بکنم؟
برای تبدیل Ascii به Binary می تونی از این لینک استفاده کنی
http://www.theskull.com/javascript/ascii-binary.html

xman_1365_x
جمعه 01 اردیبهشت 1391, 23:33 عصر
ببخشید حالا اگه من بخوام اون 3 خط صفر و یک رو که نوشتید یا معادل 0و1 مثال hello world رو اجرا کنم،چیکار باید بکنم؟
در پست 8 به لینکی که گذاشتم مراجعه کنید نحوه تبدیل دستورالعمل ها به کد ماشین نوشته شده ، در نهایت باید این کد های ماشین در قالب یک فایل اجرایی با فرمت خاص نوشته بشه که میتونه pe یا elf و ... باشه
موفق باشی