ble
의사lyszt.net은 ble 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
설명
ble는 한 값이 다른 값보다 작거나 같을 때 분기합니다. 이름은 branch if less than or equal을 나타냅니다. 아래 형식은 rs1이 rs2 이하일 때 레이블로 점프하며, 부호 있는 비교를 사용합니다.
ble rs1, rs2, label
ble는 bgt처럼 피연산자를 교환하는 데 의존하는 의사 명령어입니다. a가 b보다 작거나 같은지 묻는 것은 b가 a보다 크거나 같은지 묻는 것과 같으므로, 어셈블러는 ble를 피연산자를 뒤집은 bge로 다시 씁니다. 전용 기계 명령어는 필요하지 않습니다. 기반 분기에 대해서는 bge를 참조하세요.
ble는 끝점을 포함하는 루프와 범위에 적합합니다. 카운터가 n 이하인 동안, n을 포함하여 실행되는 루프는 ble로 명확하게 읽힙니다. 같은 루프를 엄격한 blt로 쓰면 n 더하기 1이 필요합니다. 범위 검사에서는 다른 분기들과 함께 사용됩니다. 값이 최솟값 미만이면 분기하여 벗어나고, 최댓값을 초과하면 분기하여 벗어나며, 남은 것은 통과한 것입니다.
RISC-V 매뉴얼에는 bgt, bgtu, ble, bleu가 피연산자를 뒤집어 blt, bltu, bge, bgeu로 합성될 수 있다고 나와 있습니다.
같은 값은 ble로 분기하므로, 같은 피연산자에 대한 bgt의 반대가 됩니다. 어떤 쌍이든 둘 중 하나는 분기합니다. 비교는 부호 있는 비교이므로 값은 음수일 수 있습니다. blt, bge, bgt, ble를 합치면 부호 있는 네 가지 순서 방향을 모두 얻을 수 있습니다.
확장 대상
bge rs2, rs1, label
어셈블러는 이 의사 명령을 위에 나열된 실제 명령 또는 명령들로 대체합니다.
예시
li t0, 2 li t1, 5 ble t0, t1, done # 2 <= 5, so jump to 'done'
