B
✅ Branch. Unconditionally branches to a label.
✅ 무조건 분기합니다. 지정한 라벨로 실행 흐름을 이동시킵니다.
Syntax
B <label>
B.<cond> <label> (Conditional, e.g. B.EQ, B.NE)
Example
B loop
B.EQ exit_label
✅ Equal. True when the previous comparison’s operands were equal (or subtraction result was zero).
✅ 같음(Equal). 직전 비교의 두 피연산자가 같았을 때(또는 뺄셈 결과가 0일 때) 참입니다.
Example
B.EQ label
✅ Signed Greater than or Equal. True for a signed ‘>=’ comparison.
✅ 부호 있는 크거나 같음. 부호 있는 ‘>=’ 비교일 때 참입니다.
Example
B.GE label
✅ Signed Greater Than. True for a signed ‘>’ comparison. (Used in the C code: if (arr[j] > arr[j+1]))
✅ 부호 있는 큼. 부호 있는 ‘>’ 비교일 때 참입니다. (예: C 코드의 if (arr[j] > arr[j+1]))
Example
B.GT label
✅ Unsigned Higher. True for an unsigned ‘>’ comparison.
✅ 부호 없는 큼. 부호 없는 ‘>’ 비교일 때 참입니다.
Example
B.HI label
✅ Carry Set / Unsigned Higher or Same. True for an unsigned ‘>=’ comparison.
✅ 캐리 설정 / 부호 없는 크거나 같음. 부호 없는 ‘>=’ 비교일 때 참입니다.
Example
B.HS label
✅ Signed Less than or Equal. True for a signed ‘<=’ comparison.
✅ 부호 있는 작거나 같음. 부호 있는 ‘<=’ 비교일 때 참입니다.
Example
B.LE label
✅ Carry Clear / Unsigned Lower. True for an unsigned ‘<’ comparison.
✅ 캐리 해제 / 부호 없는 작음. 부호 없는 ‘<’ 비교일 때 참입니다.
Example
B.LO label
✅ Unsigned Lower or Same. True for an unsigned ‘<=’ comparison.
✅ 부호 없는 작거나 같음. 부호 없는 ‘<=’ 비교일 때 참입니다.
Example
B.LS label
✅ Signed Less Than. True for a signed ‘<’ comparison.
✅ 부호 있는 작음(Less Than). 부호 있는 ‘<’ 비교일 때 참입니다.
Example
B.LT label
✅ Not Equal. True when the previous comparison’s operands were different.
✅ 같지 않음. 직전 비교의 두 피연산자가 달랐을 때 참입니다.
Example
B.NE label
✅ Bitfield Insert. Copies a bitfield of a given width from the low bits of the source register into a specified position of the destination register, leaving the destination’s other bits unchanged.
✅ 비트필드 삽입. 소스 레지스터의 하위 비트 중 지정한 폭만큼을 대상 레지스터의 지정한 위치에 끼워넣고, 대상 레지스터의 나머지 비트는 그대로 유지합니다.
Syntax
BFI <Wd|Xd>, <Wn|Xn>, #<lsb>, #<width>
Example
BFI X0, X1, #8, #4 // X1의 하위 4비트를 X0의 8번 비트 위치에 삽입
✅ Bitfield Extract and Insert at Low. Copies a bit range out of the source register and inserts it at the low end of the destination, leaving the destination’s other bits untouched. Useful for pulling one packed field (e.g. a status code) out of a word without disturbing the rest of the destination register.
✅ 비트필드 추출 후 하위에 삽입. 소스 레지스터에서 지정한 비트 범위를 뽑아내어 대상 레지스터의 하위 비트에 삽입하며, 대상의 나머지 비트는 그대로 유지합니다. 패킹된 필드(예: 상태 코드) 하나를 워드에서 뽑아내되, 대상 레지스터의 나머지 값은 건드리지 않고 싶을 때 유용합니다.
Syntax
BFXIL <Wd|Xd>, <Wn|Xn>, #<lsb>, #<width>
Example
BFXIL X0, X1, #8, #4 // X1의 비트[11:8]을 뽑아 X0의 비트[3:0]에 삽입 (나머지 X0는 그대로)
✅ Bitwise Bit Clear. Computes Xn AND (NOT Xm) and writes the result to the destination; used to force specific bits of a value to zero using a mask.
✅ 비트 클리어. Xn AND (NOT Xm)을 계산하여 결과를 저장합니다. 마스크를 이용해 값의 특정 비트들을 강제로 0으로 만들 때 사용합니다.
Syntax
BIC <Wd|Xd>, <Wn|Xn>, <Wm|Xm>
Example
BIC X0, X1, X2 // X1의 비트 중 X2에서 1인 자리를 0으로 지움
🔗 Open Example**
✅ Bitwise Insert if False. Inserts bits from Vn into the destination wherever the mask in Vm is 0, leaving the rest of the destination unchanged. The complement of BIT.
✅ 조건부(거짓) 비트 삽입. 마스크 Vm의 비트가 0인 자리에만 Vn의 비트를 대상에 삽입합니다. BIT의 반대 조건입니다.
Syntax
BIF <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
Example
BIF V0.16B, V1.16B, V2.16B
✅ Bitwise Insert if True. Inserts bits from Vn into the destination wherever the mask in Vm is 1, leaving the rest of the destination unchanged.
✅ 조건부(참) 비트 삽입. 마스크 Vm의 비트가 1인 자리에만 Vn의 비트를 대상에 삽입합니다. 나머지 자리는 원래 값 그대로 유지됩니다.
Syntax
BIT <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
Example
BIT V0.16B, V1.16B, V2.16B
✅ Branch with Link. Calls a subroutine, saving the return address in X30 (Link Register).
✅ 링크와 함께 분기합니다. 서브루틴을 호출하면서 복귀 주소를 X30 (링크 레지스터)에 저장합니다.
Syntax
BL <label>
Example
BL my_function
✅ Branch with Link to Register. Calls a subroutine whose address is held in a register, saving the return address in X30 (Link Register).
✅ 레지스터의 주소로 링크와 함께 분기합니다. 주소가 레지스터에 담긴 서브루틴을 호출하며, 복귀 주소를 X30(링크 레지스터)에 저장합니다. 닷넷의 델리게이트와 같이 컴파일타임에 주소를 모르는 경우.
Syntax
BLR <Xn>
Example
BLR X8
✅ Branch to Register. Branches unconditionally to the address held in a register, without linking a return address (no update to X30).
✅ 레지스터로 분기합니다. 복귀 주소를 링크하지 않고(X30 갱신 없이) 레지스터에 담긴 주소로 무조건 분기합니다.
Syntax
BR <Xn>
Example
BR X16
✅ Breakpoint instruction. Triggers a software breakpoint exception, halting execution for a debugger to inspect state. Commonly generated by compilers for assert()/trap-style failures.
✅ 브레이크포인트 명령. 소프트웨어 브레이크포인트 예외를 발생시켜 디버거가 상태를 살펴볼 수 있도록 실행을 멈춥니다. assert() 실패 같은 트랩 상황에서 컴파일러가 흔히 생성합니다.
Syntax
BRK #<imm>
Example
BRK #0x1
✅ Bitwise Select. Uses the destination register’s current bits as a mask: where the mask bit is 1, keeps the bit from Vn; where it’s 0, takes the bit from Vm. Typically paired with a CMxx instruction to build a branchless if/else over vector lanes.
✅ 비트 단위 선택. 대상 레지스터에 이미 들어있는 값을 마스크로 사용해서, 마스크 비트가 1인 자리는 Vn의 비트를, 0인 자리는 Vm의 비트를 가져와 채웁니다. 보통 CMxx 계열 명령어와 짝지어, 분기 없이 벡터 레인 단위 if/else를 구현할 때 씁니다.
Syntax
BSL <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
Example
CMGT V3.4S, V1.4S, V2.4S // 마스크 생성
BSL V3.16B, V1.16B, V2.16B // 마스크에 따라 V1/V2 중 선택
🔗 [Open Summary]