c언어에서
if(A&&B){
블록안
}
블록밖
이런 구조잖음
c언어가 어셈블리언어로 바뀌면
어셈블리언어는 저렇게 한번에 여러조건 동시에 검사를 못하고 나눠서해야함
논리적인 순서가
1. A가 0(false)이면 블록밖(4번)으로 점프해라
2. B가 0(false)이면 블록밖(4번)으로 점프해라
3. 1,2번에서 점프가 실행이 안되서 블록안으로 코드로 진입함
4. 그리고 블록밖을 실행함
즉 A가 0이면 4번으로 점프해서 B는 실행이 안됨
- dc official App
컴파일러마다 다름 - dc App
파이프라인 아키텍처에서의 컴파일러의 경우에는 좀 다름 - dc App
이건 언어 스펙으로 정해져 있음ㅇㅅㅇ
점프 막하면 stall 걸려서 손해 나는 경우가 있어서 좀 다름. 아마 저게 최대한 최적화시킨 절차가 아닐거임 - dc App