Dプログラミング言語のテンプレートのドキュメント全体を読んだだけですが、非常に単純なタスクの方法が見つからないようです。関数については、各関数の先頭に3つのアセンブラ命令を挿入する必要があります。これを自動化したいと思いますマクロなので、毎回手動で記述する必要はありません。
__gshared void jump()
{
asm{db START_KEY;}
//bla bla bla
asm{mov EBX, ip;add ip,4;jmp dword ptr [EBX];db END_KEY;}
}
このようなものは
__gshared void jump()
{
mixin starttemplate();
//bla bla bla
mixin endtemplate();
}
CIでは、このようなことをしたでしょう
#define STARTASM() asm{.......}
しかし、私がこのようなことをしようとすると
template endtemplate()
{
asm{mov EBX, ip;add ip,4;jmp dword ptr [EBX];db END_KEY;}
}
テンプレートで変数を宣言する必要があるというエラーがスローされます(ここではパフォーマンスが絶対に必要なので、これはしたくありません)。