nasm プログラムで、さまざまな C ライブラリからいくつかの関数を呼び出す必要があります。
ライブラリ:
<sys/ptrace.h>
<sys/wait.h>
...そして、ptrace、execl、wait などの関数。
nasm プログラムで、さまざまな C ライブラリからいくつかの関数を呼び出す必要があります。
ライブラリ:
<sys/ptrace.h>
<sys/wait.h>
...そして、ptrace、execl、wait などの関数。
アセンブリ プログラムから C またはその他の HLL 関数を使用するには、一般に次の 2 つの方法があります。
静的リンク - リンカーを使用している場合は、必要な HLL 生成の .obj または .lib ファイルと一緒にプログラムをリンクできます。
動的リンク - プログラムは、コンパイル時ではなく、読み込み時に必要な関数にリンクします。2 つの可能な実装があります。
2.1. 動的ライブラリを手動でロードし、必要な関数のアドレスを取得します。これには、OS が提供するサービスを使用する必要があります。たとえば Linux では、これは sys_uselib (かなり古い) であるか、自分でライブラリをロードして関数アドレスの ELF ファイルを解析します。
2.2. 使用するライブラリと関数のリストを含むインポート テーブルを作成します。次に、OS ローダーは、関数のアドレスをプレースホルダー変数に自動的に提供し、そこから間接的に呼び出すことができます。
これらのメソッドはすべて、OS とアセンブラーに大きく依存するため、使用するアセンブラーの例のみを提供できます。
Linux 用のインポート テーブルを作成する FreshLib 用のインポート マクロ。