View Full Version : اسمبلر چگونه ساخته می شه؟
jeson_park
سه شنبه 14 دی 1389, 22:05 عصر
سلام
همونطور که میدونین ما با استفاده از نرم افزار ها ازقابلیت های سخت افزاری کامپیوتر استفاده می کنیم!(:تشویق:)
نرم افزار ها با استفاده از زبان های برنامه نویسی نوشته می شن
زبان های برنامه نویسی هم اکثرا دستوراتشون بعد از کامپایل شدن به زبان اسمبلی تبدیل می شه
زبان اسمبلی هم دستورات رو به زبان ماشین (به عبارتی 0 و 1 ) تبدیل می کنه
http://www.webopedia.com/FIG/PROG-LAN.gif
حالا من می خواستم بدونم که اسمبلر رو چه طور می نویسن؟
سیستم چه طور با دستور add ax,bx متوجه میشه که باید محتویات یک ثبات رو جمع کرد و درون ثبات دیگه ریخت؟
eshpilen
سه شنبه 14 دی 1389, 22:36 عصر
بنظرم سوالت باید به تالار دیگری منتقل بشه.
زبان اسمبلی در نهایت به یکسری کد عددی تبدیل میشه که این کدها در داخل CPU برنامه ریزی شدن و هرکدوم علامت یک عملیات خاص هستن.
معمولا تناظر یک به یک میان دستورات اسمبلی و کدهای ماشین وجود داره. یعنی مثلا add مستقیما به یک کد ماشین فرضا عدد 1003 تبدیل میشه.
CPU مثلا ابتدا به کد دستور جمع برمیخوره، و بعدش باید پارامترهای لازم دیگه مثل آدرس رجیستر و غیره بیاد.
البته این خیلی کلی و تاحدی تصوری هست و جزییاتش رو اونایی که در این سطح دانش و تجربهء زیاد دارن میدونن.
jeson_park
چهارشنبه 15 دی 1389, 00:41 صبح
با سلام
ممنون از جوابتون
این هایی که گفتین رو تقریبا می دونم
منظورتون instruction set هست
من منظورم چیز دیگه ای هست
من می خوام بدونم یه اسمبلر (مثل TASM ) چگونه نوشته می شه؟
eshpilen
چهارشنبه 15 دی 1389, 00:56 صبح
جزییاتش تخصصی هست دیگه.
ولی فکر میکنم سوال شما هنوز بیش از حد مبهم و کلی هست. چون یکی اگر بخواد جواب بده از کجا باید شروع کنه و چیا رو بگه از این مجموعهء عظیم؟
باید مشخص کنید مثلا ابتدا از کجاش و در چه موردی مشکل دارید.
vcldeveloper
چهارشنبه 15 دی 1389, 01:04 صبح
من می خوام بدونم یه اسمبلر (مثل TASM ) چگونه نوشته می شه؟
اسمبلر هم یک نوع کامپایلر هست؛ یک parser برای پردازش سورس کد ورودی داره، و کد اسمبلی را تبدیل به کدهای متناظر ماشین مورد نظر میکنه. درباره ساختن کامپایلر کتاب و مطلب زیاد هست. اگر جزئیات خاصی در این زمینه مد نظر تون هست، می تونید در تالار "الگوریتم ها، ساختمان داده، و کامپایلر"، که مخصوص همین موضوع هست، سوال تان را بپرسید.
jeson_park
چهارشنبه 15 دی 1389, 01:19 صبح
سلام
باز هم ممنون
نمی دونم چه طور منظورمو برسونم
ببینید کامپیوتر سخت افزار هست
بدون نرم ا افزار نمی شه از اون استفاده کرد
پس باید برای سخت افزار یه نرم افزار نوشته شه
نرم افزار رو با زبان برنامه نویسی می نویسن
زبان برنامه نویسی نیاز به کامپایلر داره
کامپایلر رو هم معمولا با اسمبلی می نویسن(مثلا کامپایلر های قدیمی سی یا سی پلاس پلاس)
حلا من می خوام بدونم اسمبلر رو چه طور می نوشتن؟؟؟
مثلا تا اونجایی که من می دونم اولین CPU اینتل 4004 (http://en.wikipedia.org/wiki/Intel_4004)بوده
خب اسمبلر این رو چه طوری نوشتن؟
آقای کشاورز من می خوام بدونم همون "parser برای پردازش سورس کد ورودی " رو چه طوری مینویسن؟
eshpilen
چهارشنبه 15 دی 1389, 01:42 صبح
والا قدیما، یعنی اولای اولش، ظاهرا بصورت دستی کدهاش رو به زبان ماشین تهیه کردن. چون بقول شما دیگه ابزاری برای تولید خودش نبوده.
دستی یعنی چطوری؟ خب یجوری مثلا با سخت افزار و کارهایی مثل سیم بندی و مثلا ایجاد نقاط مغناطیسی متناظر با کدها در روی دیسک/نوار مغناطیسی. البته من حضور ذهن ندارم و اینا رو فرضی گفتم. بنظرم قبلا یه چیزایی در اینمورد جسته و گریخته خونده بودم. خلاصه تمام کدهای عددی رو خودشون از توی جدول های CPU روی کاغذ آوردن و بعد یجوری به خورد دستگاه دادن دیگه!!
بعدا تونستن با همین ابزارها (اسمبلرها)، ابزارهایی برای تولید ابزارهای پیشرفته تر بسازن و حتی با این ابزارها بخشهای دیگر و توسعهء خود همین ابزارها رو ایجاد کنن. این کار ممکن هست. کار سخت و عجیبی نیست در اصل مفهومش. اون قدیمی ها که با سخت افزار خوب آشنا بودن خیلی مسائل رو حل کردن و امروز نرم افزارهای آماده و خودکار حتی برای ساخت کامپایلرهای مختلف وجود داره.
jeson_park
چهارشنبه 15 دی 1389, 01:58 صبح
سلام
اون قسمت "بعدا تونستن با همین ابزارها (اسمبلرها)، ابزارهایی برای تولید ابزارهای پیشرفته تر بسازن " رو هم خودم میدونم
بحث من روی همون "اولش" هست!
این که اولش چه طوری به CPU برنامه می دادن(خود اسمبلرش هم نیاز به نوشتن داره بالاخره)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.