브랜치 (컴퓨터 과학)

브랜치(branch) 또는 분기는 컴퓨터가 다른 명령 시퀀스의 실행을 시작하도록 지시함으로써 순서대로 명령의 기본 실행 지시로부터 벗어날 수 있게 하는 컴퓨터 프로그램의 한 명령이다. 또, 브랜치(branch, branching, branched)는 브랜치 명령 실행의 결과로서 각기 다른 명령 시퀀스로의 실행을 전환하는 행위를 가리키는 용어이기도 하다. 브랜치 명령은 프로그램 루프와 조건문의 제어 흐름을 구현하기 위해 사용된다.(예: 특정 조건이 만족하는 경우에만 특정 명령 시퀀스를 실행하는 것)

브랜치 명령은 무조건 브랜치를 수행하는 비조건적 브랜치, 그리고 일부 조건에 따라 브랜치를 수행할 수도, 수행하지 않을 수도 있는 조건적 브랜치로 나눌 수 있다. 또, 새로운 명령 시퀀스의 주소("대상" 주소)를 어떻게 규정하는지에 따라 브랜치 명령은 일반적으로 "직접적", "간접적", "상대적"으로 분류되는데, 이는 명령에 대상 주소가 포함되어 있거나 대상 주소가 발견되는 장소(예: 레지스터 또는 메모리 위치)를 규정하거나, 현재 및 대상 주소 간 차이를 규정하는 것을 의미한다."A Survey of Techniques for Dynamic Branch Prediction", S. Mittal, CPE 2018

 구현 
 예 
다음 표는 잘 알려진 일부 아키텍처에서 볼 수 있는 기계 레벨 branch 또는 jump 명령을 나열한 것이다:

 조건 또는 결과 x86 PDP-11, VAX ARM (부분적으로 6502) 등식 zero (implies equal for sub/cmp) JZ; JNZ BEQ; BNE BEQ; BNE zero; not zero negative (N), sign (S), or minus (M) JS; JNS BMI; BPL BMI; BPL negative; not negative arithmetic overflow (flag called O or V) JO; JNO BVS; BVC BVS; BVC overflow; not overflow carry (from add, cmp, shift, etc.) JC; JNC BCS; BCC BCS; BCC carry; not carry unsigned below (lower) JB BLO BLO * borrow unsigned below or equal (lower or same) JBE BLOS BLS * borrow or zero unsigned above or equal (higher or same) JAE BHIS BHS * not borrow unsigned above (higher) JA BHI BHI * not borrow and not zero signed less than JL BLT BLT sign≠overflow signed less or equal JLE BLE BLE (sign≠overflow) or zero signed greater or equal JGE BGE BGE sign=overflow signed greater than JG BGT BGT (sign=overflow) and not zero

 같이 보기 
 분기 테이블
 조건문
 제어 흐름
 프로그램 카운터
 함수 (프로그래밍)
 스파게티 코드

 각주 

 내용주

 외부 링크 
 Free IA-32 and x86-64 documentation, provided by Intel
 The PDP-11 FAQ
 The ARM instruction set

분류:제어 흐름
분류:명령어 처리
분류:기계어