csrrc
lyszt.net은 csrrc 및 기타 RISC-V 명령어를 더 자세히 다룹니다.
설명
csrrc는 제어 레지스터를 읽고 그 안의 비트를 클리어합니다. 제어 및 상태 레지스터(CSR)는 트랩 핸들러 주소와 인터럽트 스위치 같은 프로세서 상태를 보관합니다(csrrw 참조). 이름은 atomic read and clear bits in CSR의 줄임말입니다. CSR의 이전 값은 rd에 들어가고, 그런 다음 rs1에서 1인 모든 비트가 CSR에서 0으로 클리어됩니다. rs1에서 0인 비트는 값을 유지합니다.
csrrc rd, csr, rs1
레지스터 rs1은 마스크로 작동하며, 1 비트가 어떤 비트를 변경할지 선택하는 패턴입니다. 아래 줄은 mstatus의 비트 3을 클리어하여 전역 인터럽트 활성화를 끄고, 이전 값을 t1에 남깁니다.
li t0, 8 csrrc t1, mstatus, t0
rs1이 zero일 때, CSR은 읽히고 절대 쓰이지 않습니다. rd가 zero일 때, 이전 값은 버려지며, 이것이 csrc 축약형입니다. 비트를 설정하려면 csrrs를, 이 시뮬레이터의 CSR 목록은 csrrw를 참조하세요.
RISC-V 매뉴얼에 따르면 rs1=x0인 csrrc는 CSR을 전혀 쓰지 않습니다.
예시
li t0, 8 csrrc t1, mstatus, t0 # clears bit 3 of mstatus, t1 = old mstatus
