32 এবং 64 বিট উভয় ইন্টেল / এএমডি উভয়ের জন্যই সংকলন করা হলে বেশিরভাগ সফ্টওয়্যার একই কাজ করবে। তবে কিছু সফ্টওয়্যার আসবে না। অলসতা বা বৃহত্তর শ্রোতার কাছে পৌঁছানো ছাড়াও কয়েকটি নির্দিষ্ট কারণ রয়েছে যে কেন 64 বিট হিসাবে পুনরায় সংযোগ করা কাজ করবে না।
সফ্টওয়্যারটি অনিরাপদ পয়েন্টার অপারেশনগুলি ব্যবহার করতে পারে। সম্ভবত কোনও প্রোগ্রাম একটি পয়েন্টারকে একটি ইনট মধ্যে রাখে যা বেশিরভাগ সি এবং সি ++ সংকলকগুলির জন্য সাধারণত 32 বিট। পয়েন্টারগুলি একটি 64 বিট প্রোগ্রামে 64 বিট হয়। যে কাজ করে না।
বিট শিফট ক্রিয়াকলাপগুলি পৃথক আকারের ফলাফল তৈরি করতে পারে যদি ব্যবহৃত পূর্ণসংখ্যার ধরনটি ভিন্ন আকারের হয়। স্ট্যান্ডার্ড টাইপডেফের পরিবর্তে নিয়মিত ডেটা টাইপ ব্যবহার করার সময় এটি একটি সমস্যা হতে পারেint32_t
ইউনিয়নে ব্যবহৃত একটি ডেটা টাইপ মাপ পরিবর্তন করতে পারে, ইউনিয়নের আচরণ পরিবর্তন করে।
সফ্টওয়্যার কেবল 32-বিট লাইব্রেরিতে নির্ভর করতে পারে। সাধারণভাবে, স্ট্যাক, পয়েন্টার ইত্যাদির অনুমানের কারণে একটি 64 বিট প্রোগ্রাম কেবলমাত্র 64 বিট লাইব্রেরি নিয়ে কাজ করবে
আপনার প্রশ্নে আপনি যে অসুবিধা সম্পর্কে জিজ্ঞাসা করছেন সেগুলি হ'ল কিছু কোড বেসগুলিতে কয়েক মিলিয়ন কোডের কোড থাকতে পারে যা অনিরাপদ অপারেশন করে, অনিরাপদ অনুমান করে, শর্টকাট এবং বিকাশকারীদের দ্বারা চালিত "অপ্টিমাইজেশন" রাখতে পারে। কোডটি হয় একটি 64 বিট পরিবেশে সংকলন করবে না, বা এটি সংকলন করবে তবে শো-স্টপার বাগ থাকবে। সমস্ত সমস্যা সমাধান করতে দীর্ঘ সময় নিতে পারে। A৪ বিটের সংস্করণ প্রকাশ করা সম্ভব না হওয়া পর্যন্ত কোনও সংস্থা সময়ের সাথে তাদের সংশোধন করবে। হতে পারে কোনও সংস্থা বর্তমান রক্ষণাবেক্ষণ প্রকাশের পাশাপাশি একটি "সংস্করণ 2" বিকাশ করবে কারণ মোট পুনর্লিখন প্রয়োজনীয়।
গল্পটির নৈতিকতা হল পরিষ্কার কোড লিখুন এবং সংকলকটিকে দ্বিতীয়-অনুমান করার চেষ্টা করবেন না বা প্রয়োজনীয় নয় এমন চতুর অপ্টিমাইজেশান যুক্ত করার চেষ্টা করবেন না, সফ্টওয়্যারটি ভেঙে ফেলতে পারে, এবং সম্ভবত কোনওভাবে সহায়তা করবে না।
এই নিবন্ধটি আমি এই উত্তরে অন্তর্ভুক্ত করার আশা করতে পারি তার থেকে আরও বিশদে চলে গেছে: 64৪ -বিট প্ল্যাটফর্মে সি ++ কোড পোর্ট করার 20 টি সমস্যা
sizeof(int)==sizeof(void*)