blt
lyszt.net은 blt 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
인코딩 형식
설명
blt는 두 값을 비교하고 첫 번째 값이 더 작을 때 분기합니다. beq와 bne는 대신 동등성을 검사합니다. 이 이름은 branch if less than의 약자입니다. 아래 형식은 rs1이 rs2보다 작을 때 레이블이 지정된 위치로 점프하고, 그렇지 않으면 다음 명령어로 폴스루합니다.
blt rs1, rs2, label
beq 페이지에서는 분기, 레이블, 점프가 작동하는 방식을 설명합니다.
이 비교는 두 값을 모두 부호 있는 값으로 취급하므로 음수일 수 있습니다. -1은 0보다 작고, 모든 음수는 모든 양수보다 작습니다. 부호 없는 비교에는 별도의 명령어 bltu를 사용하며, 최상위 비트가 설정된 값에서는 두 명령어의 결과가 다릅니다.
카운팅 루프는 blt에 의존합니다. 아래 줄은 카운터 t0가 한계 t1보다 작은 동안 반복합니다.
blt t0, t1, loop
카운터가 한계에 도달하면 분기가 수행되지 않고 루프가 종료됩니다. 경계 검사도 같은 명령어를 사용하여 프로그램이 값을 사용하기 전에 그 값을 최댓값 미만으로 유지합니다.
RISC-V 매뉴얼은 blt와 bltu가 rs1이 rs2보다 작을 때 분기하며, 각각 부호 있는 비교와 부호 없는 비교를 수행한다고 명시합니다. 또한 bgt, bgtu, ble, bleu는 blt, bltu, bge, bgeu의 피연산자를 뒤집어 합성할 수 있다고 설명합니다.
RISC-V에는 branch if greater가 없습니다. a가 b보다 큰지 검사하려면 비교를 뒤집어 b가 a보다 작은지 검사합니다. 어셈블러는 피연산자를 대신 바꿔 주는 bgt 축약형을 제공합니다.
예시
li t0, 2 li t1, 5 blt t0, t1, done # 2 < 5, so jump to 'done'
