一部のコードを C からアセンブリに移植しようとしていますが、ここで問題が発生しています。C関数では、構造体が渡されます。この構造体内には、次のような 2 つの関数が保存されています。
typedef struct sort sort_t;
struct sort {
void *data;
cmpfunc_t cmpfunc;
cpyfunc_t cpyfunc;
};
C コードでは、これらの関数は次のように呼び出されます (m は構造体へのポインターです)。
m->cpyfunc(m->data, j, k);
今、私はアセンブリでこれをやろうとしています。構造体がメモリに順次保存されることに気付きました。したがって、m が %ebx に格納されている場合、cmpfunc は 4(%ebx) にあります。しかし、アセンブリからこの関数を呼び出す方法がわかりません。次のようにして、4(%ebx) から直接両方を実行してみました。
call *4(%ebx)
それはうまくいかないので、私は試しました:
movl 4(%ebx),%edx
call *%edx
しかし、役に立たない。これを行う方法が見つからないようで、試した検索でも何も見つかりませんでした。アセンブリでこれを行うにはどうすればよいですか?