1

bzipを実行して、nasmでコード化されたアセンブリプログラム(Linuxの場合)内から呼び出し元の関数に制御を戻そうとしています。これを実現するには、sys_forkシステムコールとsys_execveシステムコールを組み合わせて使用​​する必要があるようです。よく調べてみたところ、sys_execveの使い方の例が見つかりましたが、sys_forkの使い方の例が見つかりません。私のリクエストでどんな助けでもありがたいです。

4

1 に答える 1

2

私の経験は限られていますが、思い出すsys_forkと簡単です。「それをするだけ」-パラメータなし。この時点で、あなたは「一度に2つの場所にいる」ことになります。がゼロの場合eax、あなたは子供ですsys_execve-bzipで実行してください。がeaxゼロ以外(および負でない!)の場合、あなたは親でeaxあり、PIDです。sys_waitpidそのPIDでを実行します。私が思い出したように、これは左に8バイトシフトされたbzipの終了ステータスを返します-sys_execveそれ自体は決して戻りません。

エディター、nasm、およびld(すべてハードコードされた「hello.asm」上)を実行する大まかな例があります。投稿するのに時間がかかりますが、必要に応じて何らかの方法で利用できるようにすることができます。sys_execve私が思い出したように、私は最も難しい部分に正しいパラメータを取得することを見つけました。

于 2012-12-10T21:12:26.753 に答える