PDA

View Full Version : نحوه ی تعریف کردن سی در سخت افزار



storm_saeed
شنبه 28 آبان 1390, 19:05 عصر
با سلام
آیا کسی میدونه چه جوری سی رو در سخت افزار تعریف می کنن برای مثال (نمیدونم درسته یا نه) هسته ی ویندوز رو با سی نوشتن سی رو هم با اسمبلی حالا چه جوری سی یا همون اسمبلی در سخت افزار ها ذخیره شده و چجوری ویمدوز هم زبان سی و جاوا و پرل رو می تونه اجرا کنه
ممنون

Arcsinos
شنبه 28 آبان 1390, 19:57 عصر
سلام

اولا تبریک میگم به خاطر سوالی که پرسیدی . هر کسی این سوال رو نمیپرسه . یا میپرسه و میگه " به من چه " ؟ در کل سوالت خوب بود . حال کردیم .

من جواب سوالت رو نمیدونم ، این اطلاعاتی رو هم که دارم مینویسم احتمال اشتباه بودنشون هست ، ولی در کل میگم شاید کمکت که :

( قبلش یه چی داخل پرانز بگم که یه سری یکی از دوستام که رشتش الکترونیک هست یه ماشین حساب آوورد پیشم ، که خودش سر هم کرده بود ، یعنی از LED گرفته بود تا صفه کلید و بورد و ... رو خودش جدا جدا گرفته بود و اسمبل کرده بود و آوورده بود تا من برنامه ای رو که به زبان سی نوشته بودن و به این ماشین حساب داده بودن رو من براش توضیح بدم که چی کار میکنه و چی کار نمیکنه . نکته اینجاست که ماشین حسابه با یه کابل به کامیپوتر وصل میشد و ما فایلهای مورد نیاز رو میریختیم توشو ، هر کاریو که توی اون برنامه ی سی ازش خواسته بودیم رو ماشین حساب برامون انجام میداد ، از یه هدر xxxx16.h هم استفاده کرده بودیم که دقیقا اسمش رو یادم نیست این از این )

حالا نمیدونم اینو دقیقا از کجا آووردی که سی رو با اسمبلی نوشتن ، ولی فکر میکنم زبان سی یه زبان سطح بالاست و برای اینکه به زبان ماشین تبدیل بشه و بتونه اجرا شه به کامپایلر نیاز داره ولی زبان اسمبلی که یه زبان سطح پایینه برای اینکه به زبان ماشین تبدیل و قابل اجرا تبدیل شه به اسمبلر نیاز داره . پس فکر میکنم زبان سی و اسمبلی هیچ ارتباطی به هم ندارن . البته دارنا ولی نه اینکه اگه اسمبلی نباشه سی هم معنی نداره . (فکر میکنم )

خب اینکه این زبان (اسمبلی)چطور در سخت افزار ذخیره شده که فکر میکنم مشخص باشه یه تعداد صفر و یک که پشت سر هم هستن . زبان اسمبلی یا به قولی زبان ماشین در ROM یا همون حافظه ی فقط خواندنی هر کامپیوتر هست و موقع ساخت کامیپوتر در ROM قرار میگیره . و تعداد محدودی دستور داره که فکر میکنم 18 عدد دستور اصلی داره ( کتاب معماری کامیپوتر موریس مانو ) این دستورات شامل ADD , HALL, IN, OUT و غیره میشن که برای کامیپوتر معنای خاصی دارن . البته این 18 تا دستور الان بیشتر شده ، اون موقعی که آقای مانو داشتن کتاب مینوشتن ، فرض بر این بود که کامپیوتر یک رجیستر یا بقولی ثبات بیشتر نداره ولی الان ثبات ها خیلی زیاد شدن . تازه اون موقع دستورات ضرب و تقسیم جزو دستورات اصلی نبودن .

خب با استفاده از این 18 دستور ما خیلی کارها (البته اون زمان ) میتونیم کنیم . الان که میتونیم با همین دستورات ، متن چاپ کنیم ، نقاشی بکشیم ، فایل بخونیم ، فایل ذخیره کنیم و .... . اگه یه بوت لودر بنویسی خیلی چیزا گیرت میاد . چون میفهمی کامیپوتری که هیچ چی توش نیست چطوری میشه که یه دفه یه سیستم عامل به این قشنگی رو باهاش میسازن . البته بوت لودر رو که نوشتی و تونستی یه متن رو باهاش چاپ کنی و بعد از اون تونستی یه فایل تکست رو بنویسی و ذخیره کنی و دوباره بازیابیش کنی ، اونوقته که جواب سوالت رو خواهی فهمید .

میدونم اصلا مفید نبود ، ولی این چیزائی بود که من به ذهنم میرسید .

موفق و پیروز باشی

_hamid
شنبه 28 آبان 1390, 20:21 عصر
arcsinos آخرش مفید بود رفیق ;)

راستش فقط اومدم بگم :
اسمبلی یه زبان نیست! در اصل زبون خود ماشینه! اسمبلر هم تنها کاری که می کنه تبدیل نوشته هاست به اعداد باینری که خوشبختانه آشنایید دیگه.
و بر عکس اینکه باید بگم در اصل زبون سی یک جور اسمبلیه ;)
چجور؟‌از نوع اینکه وقتی کد سی می نویسی تبدیل میشه به اسمبلی بعد بهینه می شه و بعد تبدیل به object و در نهایت link :)
خیلی دقیق تر خواستید وارد ماجرا بشید فکر می کنم بهترین حالت اینه که خودتون پی اش رو بگیرد با زبان انگلیسی :)

آخرش در تصدیق حرف سوال کننده بعله. زبان ماشین اسمبلی است. زبان اسمبلی زبان نیست یک نوع ترجمه کردن مثل ترجمه ی لغت به لغته (بدون بهینه کردن و هرچی باشه عینا اجرا می شه ).
برای این از سی استفاده می کنن که سی بهترین گزینه برای تبدیل به اسمبلی هست و دارای سطح بالای کنترل روی کد به اسمبلی و بهنیه کردن کد.
کلا در این مورد دنبال linker ها و loader ها بگرد. :)

rezaricky
یک شنبه 29 آبان 1390, 00:41 صبح
سخت افزار فقط قادر به اجرای زبان ماشین(صفر و یک) هست،شما هم وقتی یک کد با زبان سی یا هر زبان دیگه ای مینویسی، کدت بوسیله کامپایلر مخصوص اون زبان به زبان ماشین تبدیل میشه و بعدش سخت افزار میتونه اجراش کنه.
و اینکه سی رو در سخت افزار تعریف می کنند کلا اشتباه است

هسته ی ویندوزم که با سی نوشتن کامپایلش کردن تا به زبان ماشین تبدیل بشه

زبان اسمبلی هم همان زبان ماشین هست با این تفاوت که یک حرف بجای مجموعه ای از صفر ویک ها بکار میرود
برای مثال بجای نوشتن کد زبان ماشین 11100101011011010 از معادل حرفی ان یعنی mov ax,10 استفاده میشود