브랜치 (컴퓨터 과학)

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

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

구현편집

편집

다음 표는 잘 알려진 일부 아키텍처에서 볼 수 있는 기계 레벨 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

같이 보기편집

각주편집

내용주
  1. At least conceptually; see 비순차적 명령어 처리.

외부 링크편집