আমি 'some'
এমএসভিসি দ্বারা উত্পাদিত এসেম্বলার কোডে দুটি আক্ষরিক দেখতে পাই , তবে কেবল ঝাঁকুনি এবং জিসিসি সহ। এটি কোড কার্যকর করার সম্পূর্ণ ভিন্ন ফলাফলের দিকে নিয়ে যায়।
static const char *A = "some";
static const char *B = "some";
void f() {
if (A == B) {
throw "Hello, string merging!";
}
}
এই সংকলনের ফলাফলগুলির মধ্যে কেউ পার্থক্য এবং সাদৃশ্য ব্যাখ্যা করতে পারে? কোনও অপ্টিমাইজেশন অনুরোধ না করা সত্ত্বেও কেন ঝনঝন / জিসিসি কিছু অনুকূল করে? এটি কি একরকম অবধারিত আচরণ?
আমি আরও লক্ষ্য করেছি যে আমি যদি নীচে দেখানো অনুসারে ঘোষণাগুলি পরিবর্তন করি তবে ঝাঁকুনি / জিসিসি / এমএসভিসি এসেম্বলারের কোডে মোটেও ছাড়বে না "some"
। আচরণ আলাদা কেন?
static const char A[] = "some";
static const char B[] = "some";