bltz
의사lyszt.net은 bltz 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
설명
bltz는 레지스터가 음수를 담고 있을 때 분기합니다. 이 이름은 branch if less than zero(0보다 작으면 분기)를 의미합니다. 아래 형식은 rs가 0보다 작으면 레이블이 붙은 위치로 점프하고, 그렇지 않으면 다음 명령어로 계속 진행합니다.
bltz rs, label
어셈블러는 이 의사 명령어를 실제 명령어로 다시 씁니다. 그것은 아래 명령어가 되며, 레지스터를 항상 0을 담고 있는 zero 레지스터와 비교합니다.
blt rs, zero, label
비교는 부호 있는 비교이므로, 레지스터의 32비트는 음수가 될 수 있는 수로 읽힙니다. 분기는 두 레지스터를 비교하며 명령어에 쓰인 상수를 가질 수 없습니다. 이것이 0이 zero 레지스터에서 오는 이유입니다. 두 값을 비교하는 분기는 blt를, 레이블이 작동하는 방식은 beq를 참조하세요.
값이 0보다 작은지 확인하려면, 그 값을 레지스터에 넣고 bltz를 사용하세요. 흔한 경우는 뺄셈의 결과가 0 아래로 내려갔는지 확인하는 것과, 오류를 음수로 보고하는 함수 결과를 확인하는 것입니다.
sub t0, t1, t2 bltz t0, smaller
위의 줄은 뺄셈 결과가 0보다 작을 때 smaller로 점프합니다. 결과가 정확히 0이면 음수가 아니므로 다음 명령어로 계속 진행합니다. 마찬가지로 0을 취하는 반대 분기는 bgez입니다.
확장 대상
blt rs, zero, label
어셈블러는 이 의사 명령을 위에 나열된 실제 명령 또는 명령들로 대체합니다.
예시
li t0, -3 bltz t0, done # t0 < 0, so jump to 'done'
