আমি সর্বদা ধরে নিয়েছিলাম যে (a % 256)
অপটিমাইজারটি করার সময় স্বাভাবিকভাবেই একটি দক্ষ বিটওয়াইজ অপারেশন ব্যবহার করা হবে, যেন আমি লিখেছি (a & 0xFF)
।
সংকলক এক্সপ্লোরার gcc-6.2 (-O3) এ পরীক্ষা করার সময়:
// Type your code here, or load an example.
int mod(int num) {
return num % 256;
}
mod(int):
mov edx, edi
sar edx, 31
shr edx, 24
lea eax, [rdi+rdx]
movzx eax, al
sub eax, edx
ret
এবং অন্যান্য কোড চেষ্টা করার সময়:
// Type your code here, or load an example.
int mod(int num) {
return num & 0xFF;
}
mod(int):
movzx eax, dil
ret
দেখে মনে হচ্ছে আমি পুরোপুরি কিছু মিস করছি। কোন ধারনা?
%
হয় না &
।
num
হয় unsigned
?