exec のナニ

このあたり、v6 呑み会のテーマにして頂ければ非常に嬉しいのですが。

引数の取り扱い

引数なナニはポインタ配列になってて、て理解で良いのかな。前提として

  • u.u_arg[1] にはポインタ配列の先頭アドレスが入ってる
    • 3056 で =+ 2 してるあたりが微妙っちゃ微妙
    • あ、型としてポインタじゃなくて int なのかorz
  • na は Num of Arg で nc は Num of Char なのかどうか

あら、u.u_arg[1] を先頭なポインタ配列はイメージできたんですが、スタックに格納するナニが分からなくなってます。
あ、

3157    c = -nc;

な初期化がアレなのか。成程、ちょっとまだ明確にイメージできてないんですが

3154    ap = -nc - na*2 - 4;

なあたりがアレなのかどうか。

とは言え

  • u.u_ar0[R6] が負の値

あたりが? って思ったら突然マップが頭に浮かんだ。

ap (-nc - ns*2 -4)       c (-nc)
|                        |
+----+----+----+----+----+-----------------------+
|argc| pointer array     |argument string array  |
+----+----+----+----+----+-----------------------+

なるほど。このあたりを材料に云々できれば良いのですが。