bgt의사

bgt

의사
RISC-V 어셈블리 참조

lyszt.net은 bgt 및 기타 RISC-V 명령어를 더 자세히 다룹니다.

설명

bgt는 한 값이 다른 값보다 클 때 실행되는 분기입니다. 그 이름은 branch if greater than의 약자입니다. 아래 명령은 rs1이 rs2보다 엄격히 클 때 레이블로 점프하며, 두 값을 부호 있는 값으로 비교합니다.

bgt rs1, rs2, label

RISC-V의 여섯 가지 핵심 분기 중 greater-than을 검사하는 것은 없습니다. a가 b보다 큰지 여부는 피연산자를 교환하여 b가 a보다 작은지 여부와 같은 질문입니다. bgt는 의사 명령이며, 어셈블러는 피연산자를 뒤집어 blt로 다시 씁니다. 하드웨어는 더 단순하게 유지되고, 비교는 자연스럽게 읽히는 방향으로 여전히 작성할 수 있습니다. 기반이 되는 less-than 분기는 blt에서 설명합니다.

조건이 그 방향으로 자연스럽게 읽힐 때 bgt를 사용하세요. 예를 들어 값이 최댓값을 초과하면 분기하거나, 길이가 그에 할당된 공간보다 커지면 분기하거나, 두 경로 중 더 큰 쪽을 고를 때입니다.

The RISC-V manual states that bgt, bgtu, ble and bleu can be synthesized by reversing the operands to blt, bltu, bge and bgeu.

Strictly가 핵심 단어입니다. bgt는 두 값이 같을 때 분기하지 않습니다. 같은 값도 포함하려면 greater than or equal에서 분기하는 bge를 사용하세요. 루프와 검사에서의 off-by-one 오류는 보통 이 구분에서 비롯됩니다. 비교는 부호 있는 방식입니다. 부호 없는 데이터에는 같은 교환이 bltu에 적용됩니다.

확장 대상

blt rs2, rs1, label

어셈블러는 이 의사 명령을 위에 나열된 실제 명령 또는 명령들로 대체합니다.

예시

li t0, 5
li t1, 2
bgt t0, t1, done   # 5 > 2, so jump to 'done'