CSAPP 컴퓨터 시스템 Ch3 (3.5 ~ 3.7)
3.5 산술연산과 논리연산주소 계산 명령어 leaqmovq 가 메모리 주소를 계산해서 그 위치의 값을 읽는 것과 달리, leaq 는 주소 계산만 하고 그 값 자체를 목적지 레지스터에 넣는다. 목적 지는 반드시 레지스터이다. 컴파일러는 이걸 산술 연산 용도로 전용한다. leaq 7(%rdx,%rdx,4), %rax → %rax = 5*%rdx + 7 즉 C 의 x * 5 + 7 같은 식이 곱셈 명령 없이 한 줄로 변환된다. leaq 는 조건 코드를 설정하지 않는다. 단항, 이항 연산자단항 : inc (+1), dec (-1), neg (부호 반전), not (비트 반전) → C 의 x++, -x, ~x 에 대응이항 : ADD, SUB, IMUL, XOR, OR, AND . 두번째 피연산자가 소스이자 ..