- 669 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 10:05:04 ]
- >>666
・スタックは数が減る方に向かって伸びる。 ・その例でも引数1が %esp+0, 引数2が %esp+4 になってるでしょ? ・引数のポインタを取ったとき、スタック上の引数列が配列になるでしょ? hoge(int foo, int bar) を例に取ると int *p = &foo; によって p[0] == foo p[1] == bar となる。 で、このことは、引数不定とか可変長引数を実装するときに すごく都合がいい。スタックトップが必ず引数1になる。 K&Rの頃は引数不定がまかり通ってたし。 なお、>>666 の例では、%esp はあらかじめ減じられていると思われるため movl $0, (%esp) movl $1, 4(%esp) のように引数順に処理することもできるが、コンパイラの都合上それをやっていない。
|

|