csrr의사

csrr

의사
RISC-V 어셈블리 참조

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

설명

csrr은 제어 레지스터를 범용 레지스터로 읽어들입니다. 제어 및 상태 레지스터(CSR)는 트랩 핸들러 주소와 마지막 트랩의 원인 같은 프로세서 상태를 보관합니다(csrrw 참조). 아래 형식은 CSR의 값을 rd에 복사합니다.

csrr rd, csr

어셈블러는 이를 의사 명령어, 즉 실제 명령어로 다시 작성되는 읽기 쉬운 이름으로 취급합니다. 이는 아래 명령어가 됩니다. rs1이 zero이므로 CSR은 읽히고 아무것도 쓰이지 않습니다.

csrrs rd, csr, zero

트랩 핸들러는 두 개의 CSR을 읽는 것으로 시작합니다. mepc는 중단된 명령어의 주소를 보관하고 mcause는 트랩의 원인을 보관합니다.

csrr t0, mcause

mcause의 최상위 비트는 인터럽트의 경우 1, 예외의 경우 0입니다. 하위 비트는 원인 코드입니다. 이 시뮬레이터의 버튼 인터럽트는 0x8000000b를 남기며, 이는 코드 11의 인터럽트, 즉 머신 외부 인터럽트입니다.

RISC-V 매뉴얼은 csrr rd, csr을 csrrs rd, csr, x0으로 정의합니다.

확장 대상

csrrs rd, csr, zero

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

예시

csrr t0, mstatus   # t0 = mstatus