seqz
의사lyszt.net은 seqz 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
설명
seqz는 레지스터가 0을 담고 있는지 검사합니다. 이름은 "set if equal to zero(0과 같으면 설정)"를 뜻합니다. 소스 레지스터 rs가 0일 때 아래 형식은 목적지 레지스터 rd에 1을 쓰고, rs가 다른 값을 담고 있으면 0을 씁니다.
seqz rd, rs
출력은 1 또는 0이며, 값이 0인지에 답합니다.
seqz는 의사 명령어입니다. 즉, 어셈블러가 실제 명령어로 다시 써 넣는 읽기 쉬운 이름입니다. 결과는 아래 명령어이며, 값이 1 미만인지 묻습니다.
sltiu rd, rs, 1
부호 없는 수 중에서 0은 1 미만인 유일한 값입니다. seqz를 쓰면 어셈블러가 변환을 수행합니다.
두 값이 같은지 묻는 RISC-V 명령어는 없으므로, seqz는 동등성 검사를 구성하는 데 사용됩니다. 두 값을 XOR하면 일치할 때는 0이 되고 다를 때는 0이 아닌 결과가 나오므로, 그 결과에 seqz를 적용합니다. 1은 원래 값들이 같았음을 뜻합니다. xor 페이지는 XOR이 동일성을 감지하는 이유를 설명합니다.
RISC-V 매뉴얼은 seqz를 상수 1을 사용하는 sltiu의 어셈블러 의사 명령어로 정의하며, rs1이 0과 같으면 rd를 1로, 그렇지 않으면 0으로 설정합니다.
seqz는 또한 참 또는 거짓 값의 의미를 뒤집습니다. 0을 담은 레지스터는 1이 되고, 0이 아닌 값은 0이 됩니다. 답은 일반적인 수이므로 추가 산술에 넣을 수 있습니다. 예를 들어 조건에 따라 값을 0으로 만들기 위해 곱할 수 있습니다. 그 대응물은 0이 아님을 검사하는 snez입니다.
확장 대상
sltiu rd, rs, 1
어셈블러는 이 의사 명령을 위에 나열된 실제 명령 또는 명령들로 대체합니다.
예시
li t0, 0 seqz t1, t0 # t1 = 1
