07/12/31 23:48:21
何か関数を作って、法則見つけようぜ、ってことじゃね。
とりあえず、
・ 最初と最後にはスタックフレームの確保を行うと楽。
ebp とか esp とかいじってる部分がそれ。
・ 退避すべきレジスタがいくつかある。最初と最後で push/pop してるやつがそれ。
・ 引数を渡すときは、基本的には引数をスタックに push する。
後ろの引数から push するか前のから push するかはコンパイラ次第。確認しる。
可変長引数かどうかで変わる事もあるので注意する。
・ 関数を呼んだ後に引数の分だけスタックポインタを戻すには、
呼び出し側から esp に引数のサイズだけ add するか、
関数から戻る時に ret の引数を使うかする。
どっちなのかはコンパイラ次第。確認しる。
可変長引数かどうかで変わる事もあるので注意する。
標準関数を call した後に add する必要があるかどうかも確認しる。