Lions' 本読み (28)

exec() 手続き確認ちう。魔窟だ。
とりあえず以下に目を付けて

3116     ts = ((u.u_arg[1]+63)>>6) & 01777;
3117     ds = ((u.u_arg[2]+u.u_arg[3]+63)>>6) & 01777;
3118     if(estabur(ts, ds, SSIZE, sep))

u.u_arg て何よ、と思ったら直上の以下なナニで云々らしい。

3085     u.u_base = &u.u_arg[0];
3086     u.u_count = 8;
3087     u.u_offset[1] = 0;
3088     u.u_offset[0] = 0;
3089     u.u_segflg = 1;
3090     readi(ip);

ちなみに ip は exec される実行イメージなファイルのナニ。あと、3076 から 3083 なコメントにあるのですが

  • u.u_arg[1] にはテキストセグメントのサイズ
  • u.u_arg[2] にはデータセグメントのサイズ
  • u.u_arg[3] には BSS のサイズ

が格納される模様。その上で 3116-3118 なナニが何を意味しているのか、がorz