سلام دوستان
چند روزه یه سوال برام پیش اومده
cpu کامپیوتر من 32 بیتی هست. آیا برنامه هایی که با c#.net مینویسم، روی کامپیوتر های 64 بیتی جواب میده؟
و آیا میشه با این سیستمی که دارم(32 بیتی)، برنامه ای بنویسم که فقط و فقط روی کامپیوتر های 64 بیتی اجرا بشه؟
اینم بگم که cpu کامپیوترم 32 بیتی هست ولی گفته که ویندوز 64 بیتی رو هم ساپرت میکنه
با تشکر
آره خودمم نمیدونم چرا cpu م اینجوریه!!
از cpu م بگذریم، پس چرا بعضی برنامه های 32 بیتی روی ویندوز های 64 بیتی اجرا نمیشه؟
یه سوال دیگه: طبق این توضیح شما، وقتی توی C# متغیری از نوع int64 تعریف میکنیم، cpu 32bit چه جوری
میتونه پردازشش کنه و اور فلو نمی کنه؟ البته شاید اورفلو هم بکنه نمی دونم والا
بجز موارد خیلی نادر کلا برنامه هایی که با کامپایلر های 32 بیتی ایجاد می شوند در محیط سیستم عامل 64 بیتی
قابل اجرا شدن هستند، از تمامی قدرت پردازنده 64 بیتی و تمامی حافظه RAM موجود استفاده نمی کنند
اما به هر حال اجرا می شوند.
برنامه هایی که به زبان هایی مثل C یا اسمبلی می نویسیم معمولا با کامپایلر به کد ماشین تبدیل می شوند
که مستقیما توسط پردازنده 32 یا 64 بیتی اجرا می شود. اگر در این کد ماشین از دستورات یا رجیستر هایی
استفاده شود که آن پردازنده پشتیبانی نکند اجرا برنامه مختل می شود.
اما زبان های تحت Net. مثل #C خودشان یک زبان میانی دارند و موقع کامپایل شدن به اون زبان میانی تبدیل می شوند،
نه کد ماشین 32 یا 64 بیتی. برای اجرا شدن این زبان میانی Net Framework. ماشین مجازی خاص خودش را دارد
که با قابلیت های پردازنده های متفاوتی آشنا است. به کمک این ماشین مجازی کد های زبان میانی روی هر
پردازنده ای متناسب با قابلیت های آن زبان اجرا می شود، مثلا اگر پردازنده 64 بیتی است از قابلیت های 64 بیتی اش
استفاده می کند و اگر 32 بیتی است، فرضا متغیر های 64 بیتی را با الگوریتم های مخصوص خودش
شبیه سازی می کند، طوری که از دید برنامه شما فرقی نمی کند که پردازنده چند بیتی است.