ورود

نسخه کامل مشاهده نسخه کامل : تفاوت پردازنده های x86 با پردازنده های arm و غیره



AZBYY
05-12-2011, 23:11
با سلام

میخواستم بدونم تفاوت پردازنئ های خانواده x86 با سایر پردازنده ها از جمله arm یا power pc چیه؟ چرا مثلا یه سیستم عامل فقط روی پردازنده های x86 قابل نصب است و یکی دیگه فقط روی arm یا power pc اجرا میشه.؟

با تشکر

AZBYY
08-12-2011, 22:42
از دوستان کسی در این مورد چیزی نمیدونه؟

EXXTREME
08-12-2011, 22:57
arm power pc چیه؟یه توضیح بده.

saeed_136915
08-12-2011, 23:10
سلام دوست عزیز تفاوت اصلی توی معماری و ساختشون هست یکی RISC هست اون یکی CISC . تفاوت هاشون زیاده باید خودتون توی وب بگردین

AZBYY
09-12-2011, 09:44
arm power pc چیه؟یه توضیح بده.


پردازنده arm ساخت شرکت arm و پردازنده power pc ساخت شرکت ibm. مثلا قبلا apple روی محصولات خودش از پردازنده های power pc استفاده میکرد.یا مثلا الان اکثر تبلت ها که از پلتفرم nvidia tegra2 استفاده میکنن پردازنده هاشون ساخت شرکت arm هست. یا مثلا اکثر گوشیهای نوکیا هم پردازنشون ساخت arm هستش.

AZBYY
09-12-2011, 10:22
سلام دوست عزیز تفاوت اصلی توی معماری و ساختشون هست یکی RISC هست اون یکی CISC . تفاوت هاشون زیاده باید خودتون توی وب بگردین


راستش وب رو گشتم.همه خیلی کلی توضیح دادن که مثلا معماریشون با هم فرق میکنه و x86 پردارنده 32 بیتی هست و غیره و غیره.در مورد تفاوت معماری که خوب معماری اینتل و ای ام دی هم با هم فرق میکنه در حالی که جفتشون هم x86 هستن.در مورد sisc و risc هم همین power pc که risc به حساب میاد با یه پردازنده risc دیگه دستوراتشون فرق میکنه درسته؟

ببینید من سوالم اینجاست.مثلا من یه یرنامه با ++c نوشتم. کامپا یلر برنامه رو به اسمبلی ترجمه میکنه.اسمبلر هم برنامه رو به زبان ماشین ترجمه میکنه.حالا این وسط چه اتفاقی و در کجا میفته که باعث میشه برنامه من فقط روی مثلا پردازنده های x86 اجرا بشه و روی power pc اجرا نشه یا برعکس.کامپایلر کاری انجام میده.اسمبلر کاری انجام میده.چون زبان برنامه نویسی ++c بوده که دستورات مشخصی داره.پس من برنامه نویس قاعدتا نباید دخالتی تو این موضوع داشته باشم.چه بسا که سیستم عامل سیمبیان هم با ++c نوشته شده ولی فقط روی سی پی یو های arm اجرا میشه.یعنی در واقع الان دو تا برنامه داریم که هر دو با ++c نوشته شدن ولی یکی فقط روی x86 اجرا میشه و یکی فقط روی arm اجرا میشه.

Guts
09-12-2011, 12:43
راستش وب رو گشتم.همه خیلی کلی توضیح دادن که مثلا معماریشون با هم فرق میکنه و x86 پردارنده 32 بیتی هست و غیره و غیره.در مورد تفاوت معماری که خوب معماری اینتل و ای ام دی هم با هم فرق میکنه در حالی که جفتشون هم x86 هستن.در مورد sisc و risc هم همین power pc که risc به حساب میاد با یه پردازنده risc دیگه دستوراتشون فرق میکنه درسته؟

ببینید من سوالم اینجاست.مثلا من یه یرنامه با ++c نوشتم. کامپا یلر برنامه رو به اسمبلی ترجمه میکنه.اسمبلر هم برنامه رو به زبان ماشین ترجمه میکنه.حالا این وسط چه اتفاقی و در کجا میفته که باعث میشه برنامه من فقط روی مثلا پردازنده های x86 اجرا بشه و روی power pc اجرا نشه یا برعکس.کامپایلر کاری انجام میده.اسمبلر کاری انجام میده.چون زبان برنامه نویسی ++c بوده که دستورات مشخصی داره.پس من برنامه نویس قاعدتا نباید دخالتی تو این موضوع داشته باشم.چه بسا که سیستم عامل سیمبیان هم با ++c نوشته شده ولی فقط روی سی پی یو های arm اجرا میشه.یعنی در واقع الان دو تا برنامه داریم که هر دو با ++c نوشته شدن ولی یکی فقط روی x86 اجرا میشه و یکی فقط روی arm اجرا میشه.

برادر کامپایلر که شما استفاده می کنید کامپایلر x86 هست یعنی برنامه شما رو به Instruction Set های x86 تبدیل میکنه شما برای هر پردازنده ای باید از کامپایلر خاص خودش استفاده بکیند، این قضیه هم بدهی هست چون هر پردازنده ای مجموعه دستورالعمل های خاص خودش رو داره. پردانزده های x86 معمولاً مجموعه ی دستورات پایه ای مشابه ی رو استفاده میکنن برای همین معمولاً کامپایلرها میتونن کد شما رو برای این ماشین ها ترجمه کنه حالا می خواد اون ماشین اینتل x86 باشه یا AMD x86.
این لینک رو ببنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

AZBYY
09-12-2011, 22:24
با سلام
ممنون که جواب دادین. من این طور متوجه شدم که کامپایلر وقتی میخواد کامپایل کنه بسته به نوع کامپایلر که x86 باشه یا غیره کد زبان برنامه نویسی ما رو تبدیل میکنه به 1 یا جند دستور اسمبلی. این سوال برام پیش اومده که مثلا اگه یک کد به ربان ++c را با کامپایلر x86 کامپایل کنیم یک سری دستور اسمبلی ایجاد میکنه و اگر همون کد به زبان ++c رو با کامپایلر مثلا arm کامپایل کنیم یک سری دستور اسمبلی دیگه ایجاد میکنه؟ مگه زبان اسمبلی حالتهای مختفی داره؟ مثلا دستور mov در اسمبلی برای x86 و arm فرق میکنه؟
یا اگر بخام به شکل دیگه سوالم رو مطرح کنم این میشه که: ما میگیم هر پردازنده دستورات خاص خودش رو داره.برای این دستورات هم معادلی در زبان اسمبلی موجوده.پس یعنی میشه این طور نتیجه گرفت که مثلا زبان اسمبلی یک میلیون دستور داره و مثلا یک پردازنده x86 پانصد هزار تا از این دستورات رو پشتیبانی میکنه و یک پردازنده arm دویست هزار تا رو پشتیبانی میکنه و غیره؟

saeed_136915
09-12-2011, 23:51
با سلام
ممنون که جواب دادین. من این طور متوجه شدم که کامپایلر وقتی میخواد کامپایل کنه بسته به نوع کامپایلر که x86 باشه یا غیره کد زبان برنامه نویسی ما رو تبدیل میکنه به 1 یا جند دستور اسمبلی. این سوال برام پیش اومده که مثلا اگه یک کد به ربان ++c را با کامپایلر x86 کامپایل کنیم یک سری دستور اسمبلی ایجاد میکنه و اگر همون کد به زبان ++c رو با کامپایلر مثلا arm کامپایل کنیم یک سری دستور اسمبلی دیگه ایجاد میکنه؟ مگه زبان اسمبلی حالتهای مختفی داره؟ مثلا دستور mov در اسمبلی برای x86 و arm فرق میکنه؟
یا اگر بخام به شکل دیگه سوالم رو مطرح کنم این میشه که: ما میگیم هر پردازنده دستورات خاص خودش رو داره.برای این دستورات هم معادلی در زبان اسمبلی موجوده.پس یعنی میشه این طور نتیجه گرفت که مثلا زبان اسمبلی یک میلیون دستور داره و مثلا یک پردازنده x86 پانصد هزار تا از این دستورات رو پشتیبانی میکنه و یک پردازنده arm دویست هزار تا رو پشتیبانی میکنه و غیره؟

بله دوست عزیز دستورات اسمبلی توی پردازنده های RISC با اون چیزی که ما روی اسمبلرهای 8086 مینویسیم متفاوته

AZBYY
10-12-2011, 18:40
بله دوست عزیز دستورات اسمبلی توی پردازنده های RISC با اون چیزی که ما روی اسمبلرهای 8086 مینویسیم متفاوته


با سلام
ممنون از جوابتون.یعنی خود دستور اسمبلی فرق میکنه یا اینکه اسمبلر اون دستور رو به شکل متفاوتی برای سی پی یو ترجمه میکنه؟

saeed_136915
10-12-2011, 21:47
با سلام
ممنون از جوابتون.یعنی خود دستور اسمبلی فرق میکنه یا اینکه اسمبلر اون دستور رو به شکل متفاوتی برای سی پی یو ترجمه میکنه؟

بله خود دستورات فرق میکنن

AZBYY
11-12-2011, 23:05
با سلام
ممنون از راهنماییها تون.موضوع کاملا روشن شد برام.

Guts
13-12-2011, 10:29
اگه خیلی علاقه داری، Instruction Set پردازندهای ARM (عمراً :31:):


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید