bgtz의사

bgtz

의사
RISC-V 어셈블리 참조

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

설명

bgtz는 레지스터의 값이 양수일 때 분기합니다. 이름은 branch if greater than zero를 의미합니다. 아래 형식은 rs가 0보다 클 때 레이블 위치로 점프하고, 그렇지 않으면 다음 명령어로 폴스루합니다.

bgtz rs, label

어셈블러는 이를 의사 명령어로 취급하고 아래 명령어로 다시 작성합니다. 이 명령어는 zero가 레지스터보다 작은지 묻습니다.

blt zero, rs, label

RISC-V에는 greater than을 위한 분기가 없으므로 피연산자가 교환되고 less-than 분기가 작업을 수행합니다. 이는 bgt가 구성되는 방식과 같습니다. 비교는 부호 있는 비교입니다. 0은 분기하지 않으며, 이것이 bgtz를 bgez와 구분합니다. 기본 분기에 대해서는 blt를 참조하세요.

bgtz는 처리할 항목이 남아 있는 동안 계속되어야 하는 루프, 예를 들어 남은 항목 수가 0보다 큰 경우에 적합합니다. 또한 결과가 0보다 큰지 테스트합니다.

bgtz a0, found

위 줄은 a0가 1 이상을 보유할 때 found로 점프합니다. 값이 0이거나 임의의 음수이면 다음 명령어로 계속됩니다.

확장 대상

blt zero, rs, label

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

예시

li t0, 4
bgtz t0, done   # t0 > 0, so jump to 'done'