我刚刚阅读了 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;}
}
它会抛出一个错误,说我必须在模板上声明一个变量(我不想这样做,因为这里绝对需要性能)。