ভিজ্যুয়াল স্টুডিওতে "32-বিট পছন্দ করুন" সেটিংয়ের উদ্দেশ্য কী এবং এটি আসলে কীভাবে কাজ করে?


204

এখানে চিত্র বিবরণ লিখুন

আমার কাছে এটি অস্পষ্ট যে সংকলকটি যখন প্রয়োজন হয় তখন কীভাবে স্বয়ংক্রিয়ভাবে 64-বিটের জন্য সংকলন করতে জানবে। যখন এটি আত্মবিশ্বাসের সাথে 32-বিটকে লক্ষ্য করতে পারে তখন এটি কীভাবে জানবে?

কম্পাইলার কীভাবে সংকলন করার সময় কোন আর্কিটেকচারকে লক্ষ্যবস্তু করা উচিত তা সম্পর্কে আমি মূলত আগ্রহী am এটি কোডটি বিশ্লেষণ করে এটি যা খুঁজে পেয়েছে তার ভিত্তিতে কোনও সিদ্ধান্ত নিয়েছে?



আহ, ধন্যবাদ এর আগে দেখিনি। আমি এখনও আগ্রহী যে সংকলকটি স্বয়ংক্রিয়ভাবে কোন আর্কিটেকচারকে লক্ষ্যবস্তু করে তা জেনে যায়। কোন ধারনা?
হারুন

উত্তর:


219

মাইক্রোসফ্টের একটি ব্লগ এন্ট্রি রয়েছে যা এনসিপিইউ প্রকৃতপক্ষে নেট .৪.৫ এবং ভিজ্যুয়াল স্টুডিও ১১ অনুসারে :

.NET 4.5 এবং ভিজ্যুয়াল স্টুডিও 11-এ পনির সরানো হয়েছে। বেশিরভাগ নেট নেটওয়ার্কগুলির জন্য ডিফল্ট আবার যেকোনও ইউএসইপিইউ হয় তবে এখন যেকোনও ইউএসপিইউতে একাধিক অর্থ রয়েছে। অ্যানিসিপিইউর একটি অতিরিক্ত উপ-ধরণের রয়েছে, "যে কোনও সিপিইউ 32-বিট পছন্দসই", যা নতুন ডিফল্ট (সামগ্রিকভাবে, এখন / প্ল্যাটফর্ম সি # কম্পাইলার সুইচটির জন্য পাঁচটি বিকল্প রয়েছে: x86, Itanium, x64, anycpu, এবং anycpu32 বিস্ময়কর )। যেকোন সিসিপিইউয়ের "32-বিট পছন্দ" স্বাদ ব্যবহার করার সময় শব্দার্থবিজ্ঞান নীচে রয়েছে:

  • যদি প্রক্রিয়াটি 32-বিট উইন্ডোজ সিস্টেমে চলে তবে এটি 32-বিট প্রক্রিয়া হিসাবে চলে। আইএল x86 মেশিন কোডে সংকলিত।
  • যদি প্রক্রিয়াটি একটি 64-বিট উইন্ডোজ সিস্টেমে চলে তবে এটি 32-বিট প্রক্রিয়া হিসাবে চলে। আইএল x86 মেশিন কোডে সংকলিত।
  • যদি প্রক্রিয়াটি কোনও এআরএম উইন্ডোজ সিস্টেমে চলে তবে এটি 32-বিট প্রক্রিয়া হিসাবে চলে। আইএল এআরএম মেশিন কোডে সংকলিত।

তারপরে, "যে কোনও সিপিইউ 32-বিট পছন্দসই" এবং "x86" এর মধ্যে পার্থক্যটি কেবল এটিই: x86 এ সংকলিত একটি নেট অ্যাপ্লিকেশন একটি এআরএম উইন্ডোজ সিস্টেমে চলতে ব্যর্থ হবে, তবে একটি "কোনও সিপিইউ 32-বিট পছন্দসই" অ্যাপ্লিকেশন সফলভাবে চালানো হবে।


12
+1 টি। এছাড়াও, "32-বিট পছন্দ করুন" চেকবাক্সটি শুধুমাত্র নেট নেট 4.5+ এক্সিকিউটেবল প্রকল্পের জন্য সক্ষম।
লি গ্রিসম

12
Anycpu32bitpreferred এর আরেকটি সুবিধা হ'ল অন্য .exe b৪ বিটে চলমান সেই সমাবেশটি লোড করতে পারে।
ব্রুনো মার্টিনেজ

30
ব্যক্তিগতভাবে আমি মনে করি এটি ভয়াবহ বলে তারা ডিফল্টরূপে এটি সেট করার জন্য কোনও সরঞ্জাম সেট না করে সেট করে। আরও খারাপ, আপনি সিএসপোজ ফাইলগুলিতে না থাকলে এটি সন্ধান করতে পারবেন না যদি না বন্ধ হয়! বেশিরভাগ লোকেরা 32 বিট অফিস ইনস্টল করে একটি x 64 মেশিনে সিপিইউএনির সাথে অফিস অটোমেশন অসঙ্গতিগুলির কারণে সম্ভবত যুক্ত হয়েছে।
ডেভ

6
@ ব্রায়ান ডেভিডবারম্যান সেখানে রয়েছে, যদি আপনি 32-তে মিথ্যা সেট করেন তবে পছন্দসই এবং একটি 64-বিট মেশিনে x64 বা কোনও সিপিইউ সেট করেন।
লেক্স লি

6
X86 এবং যে কোনও সিপিইউ 32 বিট পছন্দসই পার্থক্যটি হ'ল পরের ক্ষেত্রে লোগালড্রেসওয়ারে পতাকা কার্যকর করা যায়। এর অর্থ a৪ বিট ওএসে চলমান 32 বিট প্রক্রিয়াটি কোনও সিপিইউ 32 বিট পছন্দসই মোডে 2 জিবি মেমরি x86 মোডে এবং 4 গিগাবাইট মেমরি ব্যবহার করতে পারে।
নিক

6

এখানে একটি সহজ উত্তর:

অ্যাপ্লিকেশন খিলান।

দ্রষ্টব্য: যে কোনও সিসিপিইউ -32 বিবিটপ্রিফার্ড কেবলমাত্র নেট সংস্করণে 4.5 এবং তার চেয়েও উচ্চতর উপলভ্য।


2
"32-বিট হিসাবে রান" বনাম "ওউডাব্লু 64" হিসাবে রানের মধ্যে পার্থক্য কী। আমি ভেবেছিলাম উইডু 64 = "উইন্ডোজ 64 এ উইন্ডোজ (32-বিট)" এবং কোনও 32-বিট অ্যাপ্লিকেশন চালানোর প্রয়োজন ছিল।
পিটার কর্ডেস

এটির কোনও উত্স আছে? আপাতদৃষ্টিতে অন্য কোথাও এখনও আমাকে ডিফল্টটি বলে যে কোনওcpu32 বিটপ্রেফায়ার্ড, এটি bit৪ বিট উইন্ডোজ মেশিনে চালিত লোকদের মধ্যে একটি বিশাল পার্থক্য (এটি অনেক বেশি)।
রান

@ র্যানসাগি আপনি একটি নতুন প্রকল্প তৈরি করে এবং এটি যাচাই করে কেবল এটি পরীক্ষা করতে পারবেন Project -> Properties -> Build tab -> Platform target... তবে মনে রাখবেন যে AnyCPU-32bitPreferredএটি কেবল। নেট সংস্করণে 4.5.৪ এবং তার চেয়েও উচ্চতর উপলভ্য। এজন্যই ডিফল্ট AnyCPU
ইউশা আলেয়াউব

কিছু ক্ষেত্রে আমার ছড়িয়ে ছিটিয়ে ছিল; আমি শুধু আশা করছিলাম। নেট 4.5+ বা। নেট স্ট্যান্ডার্ড / কোর (বা সত্যই, এমএসবিল্ড 16) এর মধ্যে কী ঘটে যায় সে সম্পর্কে কিছু ডকুমেন্টেশন রয়েছে
রান

-1

কারণটি হ'ল: আপনি যদি 64 বিট অ্যাপ্লিকেশন সহ আরও মেমরি ব্যবহার করতে চান না। যার অর্থ, আপনার অ্যাপ্লিকেশন যদি কোনও এসিপিইউ হয় তবে আপনি 32 বিট হিসাবে চালাতে চান।

আরও যোগ করতে, ভিজ্যুয়াল স্টুডিওতে সেটিংস নির্দিষ্ট সিএলআরকে লক্ষ্য করে:

ভিজ্যুয়াল স্টুডিও একটি x86 কম্পিউটারে সিএলআর-এর 32-বিট সংস্করণ ইনস্টল করে এবং 32-বিট সংস্করণ এবং সিএলআরের উপযুক্ত 64-বিট সংস্করণ 64-বিট উইন্ডোজ কম্পিউটারে ইনস্টল করে। (কারণ ভিজ্যুয়াল স্টুডিও একটি 32-বিট অ্যাপ্লিকেশন, যখন এটি একটি 64-বিট সিস্টেমে ইনস্টল করা হয়, এটি WW64 এর অধীনে চলে))

দয়া করে নিবন্ধটি -৪-বিট অ্যাপ্লিকেশনগুলি ( এমএসডিএন ) দেখুন to


1
আমি নিশ্চিত না যে এটি সঠিক। হিসাবে, এটি আমার বোঝা যায় যে 32 বা 64 নির্বিশেষে নেট কার্যনির্বাহী এখনও প্রক্রিয়ায় 2 জিবি প্রায় সীমাবদ্ধ।
জেপি রিচার্ডসন

1
আমার উত্তর সম্পাদনা। তবে নিশ্চিত নয় যে আপনি এটি যা খুঁজছেন তা :)
পেরু

2
অ্যারন, কম্পাইলার মূলত রানটাইমটির জন্য পতাকা নির্ধারণ করে যে সমাবেশটি লোড করা ঠিক আছে (উদাহরণস্বরূপ x86- শুধুমাত্র অ্যাসেম্বলিটি x64 প্রসেসে লোড করা উচিত) এবং পতাকাগুলির উপর ভিত্তি করে কীভাবে প্রক্রিয়াটি শুরু করা হবে (নতুন এক্সএইএস জন্য)। আমি বিশ্বাস করি আইএল উভয় স্বাদের জন্য একই।
অ্যালেক্সি লেভেনকভ

1
@ জেপিআরচার্ডসন হ্যাঁ আপনি ঠিক বলেছেন। কিন্তু .NET 4.5 এ আপনার আকার বাড়ানোর বিকল্প রয়েছে। পড়ুন দুটিই MSDN
পেরু

40
@ জেপিআরচার্ডসন, 32 বা 64 বিটও নয়। প্রসেস প্রতি 2 জিবিতে সীমাবদ্ধ নেট এক্সিকিউটযোগ্য - প্রথমে প্রতিটি প্রসেসের ঠিকানা স্পেস হ'ল ওএস লেভেল বাধা (32 বিট প্রসেসের জন্য 2/3 + জিবি এবং 64 বিটের জন্য আরও অনেক কিছু), দ্বিতীয় এমনকি 32 বিট সংস্করণও করতে পারে এক্সিকিউটেবলের উপর "লার্জএড্রেসআওয়্যার" পতাকা সেট করা থাকলে 2 জিবি-র বেশি ব্যবহার করুন। আমি জানি কেবলমাত্র 2 গিগাবাইট বিধিনিষেধগুলি অ্যারে / বরাদ্দ আকারগুলির সম্পর্কে যা অন্তর্গত 32 সীমা (প্রায় 2 জিবি) দ্বারা সীমাবদ্ধ।
আলেক্সি লেভেনকোভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.