レストル
レジスタ: CPUの手
まず、ビットとは何でしょうか?ビットとは0か1の1つであり、コンピュータが保存できる最小の情報単位です。それを32個集めると32ビット数になり、0から約40億まで数えることができます。RISC-Vのすべてのレジスタとすべてのメモリスロットは、1つの32ビット数を保持します。
レジスタとは、プロセッサ内部にある小さな記憶スロットで、1つの32ビット数を保持します。RISC-Vは32個のレジスタを提供します。それらはプロセッサコア内にあるため、レジスタはメインメモリよりも桁違いに高速に使用できます。そのうちのいくつかで、書くコードのほとんどをカバーできます:t0からt2(一時的な値)、a0からa2(引数と結果)、zero(常に0)、sp(スタックポインタ)、ra(リターンアドレス)。
ℹ
Simulatorタブでは、プログラムの実行中に値が変化する各レジスタを表示します。そのビューを眺めることが、レジスタの挙動を感じ取る最速の方法です。
最初のプログラム: 42 を出力する
# 42を出力し、終了します。# a7 がサービスを選び、a0 が値を受け持ちます。li a7, 1 # サービス 1 = 整数を出力li a0, 42 # 表示する値ecall # 実行するli a7, 10 # サービス 10 = 終了ecall
はload immediateの略で、定数をレジスタに配置します。はサービス1を選択し、これは整数を出力します。は出力する数値をa0に配置します。は制御をシステムに渡し、システムはa0の値を出力します。次には終了サービスを選択し、がプログラムを終了します。Runを押してから、42を変更してプログラムを再度実行してください。
プログラム実行
0x400000li a7, 1
0x400004li a0, 42
0x400008ecall
0x40000cli a7, 10
0x400010ecall
a71
a0—
output—
pc0x400000
a7を1に設定すると、次のecallは数値を出力します。
pcとラベル付けされたボックスは、プログラムカウンタの略で、現在ハイライトされている行のアドレスを保持します。その数値が、プロセッサがプログラム内の位置について知っているすべてです。つまり、プログラムカウンタのアドレスにある命令をフェッチし、それを実行し、次にプログラムカウンタに4を加えて次の命令に到達します。レジスタは、その行のが実行されるときに値を受け取り、出力は最初のが実行されるときにのみ現れます。