operand가 2개인 x86-64 코드를 보니까 낯설게 느껴짐
/*******************/
long foo (long x, long y) {
long z = x+5;
long w = x<<3;
long u = x + y;
return z+w+u*3;
}
이런 식으로 코드를 짜놨을 경우
addq $5, %rdi
를 함부로 못 하니까 레지스터를 하나 더 써야 될 거라고 생각했는데
최적화 옵션 -Og로 해도 알아서 몇 줄을 그냥 leaq로 합쳐버리네.
패배를 인정합니다.
![20]()
![94]()
/*******************/
long foo (long x, long y) {
long z = x+5;
long w = x<<3;
long u = x + y;
return z+w+u*3;
}
이런 식으로 코드를 짜놨을 경우
addq $5, %rdi
를 함부로 못 하니까 레지스터를 하나 더 써야 될 거라고 생각했는데
최적화 옵션 -Og로 해도 알아서 몇 줄을 그냥 leaq로 합쳐버리네.
패배를 인정합니다.
꿈빠일라 개쎔 ㅇㅇ;
이런거 동작하는거 너무 신기함
순서랑 관계만 알면 지가 막 비트는데 결과는 끝내주고
하지만 괄호 한방에 병신되기도 함요
괄호 한 방에 병신 되는 건 어떤 경우인가요??