[AMD64] seek(2)
しつこく,seekのネタ.mkfileのAMD64のエントリは次のようになっている.64ビットのmovはmovq命令だし,ソフトウェア割込みにはsyscall命令を使っている.汎用レジスタも増えたし,引数はレジスタ渡しを豪勢に使っているのかと思ったら,A Manual for the Plan 9 assemblerによると,一つ目はレジスタ渡しするが,残りはスタック渡しになる.レジスタ渡しには疑似レジスタRARGを使う(実際はBPを使うみたい).引数は8バイトアライメントでスタックに積まれる.RARGでレジスタ渡しされる分の空間も空けられているので,システムコールする場合は,その空間にRARGの値をmovqしている.システムコール番号はRARGで渡す.
case amd64 if(~ $i seek) echo TEXT _seek'(SB)', 1, '$0' if not echo TEXT $i'(SB)', 1, '$0' echo MOVQ RARG, 'a0+0(FP)' echo MOVQ '$'$n, RARG echo SYSCALL echo RET
seekは_seekに置き換えているんだけど...
肝心のカーネルのソースが見当たらないなぁ.どこにあるの??