আমি কিছু এমুলেটর কোডটি পড়ছি এবং আমি সত্যিই অদ্ভুত কিছুকে মোকাবিলা করেছি:
switch (reg){
case 'eax':
/* and so on*/
}
এটা কিভাবে সম্ভব? আমি ভেবেছিলাম আপনি কেবল switch
অবিচ্ছেদ্য প্রকারের উপরই পারেন। কিছু ম্যাক্রো কৌতুক চলছে?
int
, তাই এটি আইনী। তবে, একটি বহু-চরিত্রের ধ্রুবকের মান প্রয়োগ-সংজ্ঞায়িত, সুতরাং কোডটি অন্য সংকলকটিতে প্রত্যাশার মতো কাজ করতে পারে না। উদাহরণস্বরূপ, eax
হতে পারে 0x65
, 0x656178
, 0x65617800
, 0x786165
, 0x6165
, নাকি অন্য কিছু।
'eax' != 'ebx'
, অবশ্যই, তাই এটি শুধুমাত্র আপনার এক বা উদাহরণ দুটি ব্যর্থ। যদিও কোথাও কোথাও এমন কিছু কোড থাকতে পারে যা কার্যকরভাবে ধরে নেওয়া *(int*)("eax") == 'eax'
হয় এবং তাই আপনার বেশিরভাগ উদাহরণকে ব্যর্থ করে।
'eax'
সমান 'ebx'
বা এর সাথে তুলনা করতে পারে 'ax'
, এবং স্যুইচ বিবৃতিটি যেমন ইচ্ছা তেমন কাজ করবে না।
'eax'
এবং এটি ধ্রুবক পূর্ণসংখ্যার মান গণনা করে