假设我有一个带有过程地址的变量:
func_pointer dw offset my_function
my_function proc near
my_function endp
如何从变量中调用它?
我试过了
call dword ptr[func_pointer + 1]
但它似乎不起作用。
答案 0 :(得分:3)
您需要做的就是使用call func_pointer
或call [func_pointer]
(它们与MASM都相同)。因为符号func_pointer
的类型是WORD,所以汇编器知道使用间接调用而不是直接调用。
例如:
_TEXT SEGMENT PUBLIC USE16
ASSUME DS:_TEXT
func_pointer dw offset my_function
my_function proc near
ret
my_function endp
caller proc
call [func_pointer]
caller endp
_TEXT ENDS
END