Skip to the content.

B

← 전체 목차로 돌아가기


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

🔗 Open Summary

B.EQ

✅ Equal. True when the previous comparison’s operands were equal (or subtraction result was zero).

✅ 같음(Equal). 직전 비교의 두 피연산자가 같았을 때(또는 뺄셈 결과가 0일 때) 참입니다.

Example

B.EQ label

🔗 Open Summary

B.GE

✅ Signed Greater than or Equal. True for a signed ‘>=’ comparison.

✅ 부호 있는 크거나 같음. 부호 있는 ‘>=’ 비교일 때 참입니다.

Example

B.GE label

🔗 Open Summary

B.GT

✅ 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

🔗 Open Summary

B.HI

✅ Unsigned Higher. True for an unsigned ‘>’ comparison.

✅ 부호 없는 큼. 부호 없는 ‘>’ 비교일 때 참입니다.

Example

B.HI label

🔗 Open Summary

B.HS

✅ Carry Set / Unsigned Higher or Same. True for an unsigned ‘>=’ comparison.

✅ 캐리 설정 / 부호 없는 크거나 같음. 부호 없는 ‘>=’ 비교일 때 참입니다.

Example

B.HS label

🔗 Open Summary

B.LE

✅ Signed Less than or Equal. True for a signed ‘<=’ comparison.

✅ 부호 있는 작거나 같음. 부호 있는 ‘<=’ 비교일 때 참입니다.

Example

B.LE label

🔗 Open Summary

B.LO

✅ Carry Clear / Unsigned Lower. True for an unsigned ‘<’ comparison.

✅ 캐리 해제 / 부호 없는 작음. 부호 없는 ‘<’ 비교일 때 참입니다.

Example

B.LO label

🔗 Open Summary

B.LS

✅ Unsigned Lower or Same. True for an unsigned ‘<=’ comparison.

✅ 부호 없는 작거나 같음. 부호 없는 ‘<=’ 비교일 때 참입니다.

Example

B.LS label

🔗 Open Summary

B.LT

✅ Signed Less Than. True for a signed ‘<’ comparison.

✅ 부호 있는 작음(Less Than). 부호 있는 ‘<’ 비교일 때 참입니다.

Example

B.LT label

🔗 Open Summary

B.NE

✅ Not Equal. True when the previous comparison’s operands were different.

✅ 같지 않음. 직전 비교의 두 피연산자가 달랐을 때 참입니다.

Example

B.NE label

🔗 Open Summary

BFI

✅ 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번 비트 위치에 삽입

🔗 Open Summary

BFXIL

✅ 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는 그대로)

🔗 Open Summary

BIC

✅ 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**

BIF

✅ 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

🔗 Open Summary

BIT

✅ 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

🔗 Open Summary

BL

✅ Branch with Link. Calls a subroutine, saving the return address in X30 (Link Register).

✅ 링크와 함께 분기합니다. 서브루틴을 호출하면서 복귀 주소를 X30 (링크 레지스터)에 저장합니다.

Syntax

BL <label>

Example

BL my_function

🔗 Open Summary

BLR

✅ 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

🔗 Open Summary

BR

✅ 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

🔗 Open Summary

BRK

✅ 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

🔗 Open Example

BSL

✅ 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]