SSブログ

PDP-11のjsrの動き

最近、「はじめてのOSコードリーディング」を読んで、
UNIX V6のソースコードを追いながら、動きを理解する作業をしている。

PDP-11のjsrは適当に感覚で読んでいたが、とあることで
やっと動きを調べて理解した。
命令は、下記のようなものだが、

   jsr  <reg>, <target_address>

動きは、

  (1) <reg>の値をスタックに積む
  (2) <reg> にPCの値を入れる (PCはjsrの次の命令を指している)
  (3) PC に<target_address>を入れる

で、target_addressに飛ぶ訳だ。
実は (2) の処理があるのを分かってなくて、以下のコードが意味不明だった。

jsr r5, csv

csv:
   mov  r5, r0
   mov  sp, r5
   mov  r4, -(sp)
   mov  r3, -(sp)
   mov  r2, -(sp)
   jsr pc, (r0)


最後のjsrはr0の指すアドレスに飛ぶのだが、このr0はcsvの最初でr5が元になっている。
え、このr5の中身はどうなってる???
というところが疑問だった訳だ。
まあ、調べれば一発なんですがね・・・。












  

nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

NO NAME

助かりましたありがとうございます
by NO NAME (2015-10-02 22:58) 

お名前(必須)

ありがとうございます。本に書いてなくて、混乱してました。
by お名前(必須) (2018-06-24 03:57) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。