이거 gcc에서 기본 최적화 옵션에서
인스트럭션 하나 줄였음. ㅇㅇㅇㅇ
사실 뭐 진짜 뭔 인스트럭션 죄다 줄여버리자고 이거 하고있는건 아니고,
1. 인라인 어셈블리를
2. 제대로
3. 사용하고 싶음
그게 끝임 ㅇㅇㅇㅇㅇ.
저 플래그 설정 하나하나 이해 제대로 못하면 병신짓을 존나 많이함.
오늘 알게된 사실 하나 알려줄게.
그니까 오늘 고작 성과가 이거 하나뿐인건데 (뭐 전반적인 이해는 둘째치고)
내가 맨 첨에 b 쪽에서
"+r" (b) 를 했었어
왜냐? 뭐 읽기랑 쓰기랑 같이 진행되면 +하라매? 하면서 + 걍 박고봤었다고
근데 이새끼가 뭔 병신짓을 하는거야?? 쓸데없는 정보를(초기화 이전) 구태여 할당받은 레지스터에다가 집어넣어서 보존하고 있더라고.
여기서 깨달음이 왔지 ㅇㅇㅇㅇ.
아 싸발
이거 걍
asm 블록 안에서, asm 블록 진입 이전시점의 값을 버릴거면 = 쓰는거구나???
operand 들중에서 read 하는 경우가 있으면 +인게 아니라 걍, 이전값을 보존해서 읽을 경우에 +를 쓰는거였음.
이상.
오늘은 이게 전부인거같다. ㅇㅇㅇ
딱국이 정신 언제 차릴거냐?
아 저거 a를 인자로 가져가는 인스트럭션 왼쪽에서 하나 빼먹어가지고, 두개 똑같다 ㅇㅇㅇㅇ 드디어 병신짓 안한 코드를 만든거고, 저거 뭔가 printf의 인자로 전달될거라는 사실을 알고있는 입장에서 직접 output을 esi ecx같은애들로 전달해줄 수 있는지만 오늘 목표로 삼아야겠다
좆까
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ - dc App