如何在不取消引用指针的情况下使用调用操作码生成直接调用?
由于调用指令可能意味着许多操作码中的任何一个,例如xE8,xFF和x9A,如何在使用调用指令时告诉Visual Studio我想生成哪一个?
答案 0 :(得分:0)
汇编程序将根据您使用的表达式确定要生成的操作码。
如果你写call foo
,它将是一个近乎相对的电话E8
。如果您写call [foo]
,call [eax]
或call eax
,它将接近间接调用FF
(操作码扩展名2)。如果你写call foo:bar
(或者如果汇编程序知道你正在调用远程程序),它将是一个直接远程调用9A
。如果你写call far [foo]
,它将是间接远程调用,也是FF
(但操作码扩展3)。
PS:不确定VS的远程调用语法,请参阅文档以获取详细信息。但是,你通常不会使用远程呼叫。