開発日記

Erlangをダラダラ書きます。

RISC-V ID後の挙動

次のプログラムカウンタ

  • 条件分岐先アドレス(PC相対指定)

  • ジャンプ先アドレス

  • トラップベクトルアドレス

  • 現在のPC + 4

演算子

  • rs1

  • CSR即値

  • ジャンプとAUIPC用PC(PC相対指定)

  • LUIとECALL用 0

演算子

  • rs2

  • I形式即値

  • J形式即値

  • U形式即値

*S形式即値

  • CSRとECALL用 0

演算結果

  • add,加算

  • sub,減算

  • and,論理積

  • or,論理和

  • xor,排他的論理和

  • sll,論理左シフト

  • srl,論理右シフト

  • sra,算術右シフト

  • slt,左の方が小さい,符号あり

  • sltu,左の方が小さい,符号なし

  • jalr,即値ジャンプ,offsetを0にするとレジスタ間接+サブルーチンコール,x[rd]も0にするとレジスタ間接のみ

  • copy,rs1

  • 0,ECALL

yuyargon.hatenablog.com

分岐フラグ

  • beq

  • bne

  • blt,左の方が小さい,符号あり

  • bltu,左の方が小さい,符号なし,

  • bge,左の方が大きい,符号あり

  • bgeu,左の方が大きい,符号なし

  • false,条件分岐以外

CSR書き込みデータ

  • 演算子①,csrrw,csrrwi

  • (CSR読み込みデータ | 演算子①),SET,csrrs,csrrsi

  • (CSR読み込みデータ & !演算子①),CLEAR,csrrc,csrrci

  • 11.U(WORD_LEN.W),ECALL

  • 0,CSR以外

WBデータ

  • メモリ読み込みデータ,store

  • 現在のPC + 4,jal(サブルーチンコール)

  • CSR読み込みデータ,CSR

  • 0,上記以外