csrrsi
lyszt.net은 csrrsi 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
설명
csrrsi는 레지스터 대신 상수 마스크를 사용하는 csrrs입니다. i는 즉시값(immediate)을 의미하며, 명령어에 쓰이는 상수입니다. 상수 uimm은 5비트에 저장되므로 0에서 31까지의 숫자입니다. CSR의 이전 값은 rd에 들어가고, 그런 다음 uimm에서 1인 모든 비트가 CSR에서 1로 설정됩니다.
csrrsi rd, csr, uimm
아래 줄은 mstatus의 비트 3을 설정하고 이전 값을 t1에 남깁니다. 8은 이진수로 1000입니다.
csrrsi t1, mstatus, 8
이 방식으로는 비트 0에서 4까지만 설정할 수 있습니다. mstatus의 비트 3인 전역 인터럽트 활성화는 해당됩니다. mie의 비트 11인 외부 인터럽트 활성화는 해당되지 않으므로, 그것에는 0x800을 담은 레지스터와 함께 csrrs가 필요합니다. uimm이 0이면 CSR은 읽히고 쓰이지 않습니다. rd가 zero이면 이전 값은 버려지며, 이것이 csrsi 축약형입니다. 레지스터 형식은 csrrs를 참조하세요.
예시
csrrsi t1, mstatus, 8 # sets bit 3 of mstatus, t1 = old mstatus
