나는 항상 (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
?