コピーして、それ以降は引数にアクセスするには%ebpの値[これは、pushする前の時点の-4(%esp)に等しい]を基準に使うようにする。%espに戻し、退避していた%ebpをpopしておく。従って、上の例は以下のようにも書ける。16(%ebp)でアクセスする。具体的に、前項の(a)の方法で意味のある関数を作成してみる。続きに示した通常のCで書いたコードの方が分かり易い。注意:これは不定長のビットリバーサルであり、FFTで使われる固定長のものとは異なる。/*インラインアセンブリを用いたビットリバーサル。ビット列を逆さに配置する。不定長であり、見つかった最初の1以降でのビットリバーサルである。命令後には、バイトサイズ4だけ%espの値が減/増する点に注意。pushl/poplしているので、バイトサイズ12だけ%espの値が変化している。\n\t"/****srcを%ecxにロード。src);C言語で書くと次のようになる。一度書くが、これは不定長のビットリバーサルであり、FFTに使う固定長のものではない。拡張インラインアセンブリの構文は以下のようである。破壊レジスタ);より細かくみると、次のようになっている。あり、表の右側に説明を付記した。後に書いておくと、そのレジスタの内容が事前に退避、事後に復帰されるようにコンパイラが自動でコード生成してくれる。これによって、"アセンブリコード"はレジスタの退避、復帰を省いて書くことができる。出力と入力、コードによって破損するレジスタは何れも省略可能である。