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の中身はどうなってる???
というところが疑問だった訳だ。
まあ、調べれば一発なんですがね・・・。
2014-10-17 22:05
nice!(0)
コメント(2)
トラックバック(0)
助かりましたありがとうございます
by NO NAME (2015-10-02 22:58)
ありがとうございます。本に書いてなくて、混乱してました。
by お名前(必須) (2018-06-24 03:57)