我正在考虑将堆栈指针设置为函数,然后执行直到它返回。
编辑:我使用nasm和nlink。
Edit2:我使用x86处理器。
Edit3:好的,所以我想编写一个过滤函数,它会过滤一个字符串,使用另一个函数来决定char是否可以接受。我想象它的形式:
Direction
Edit4:已解决,请参阅下面的答案。
答案 0 :(得分:2)
汇编中没有“函数”,这是一个更高层次的概念。
您没有说明您正在使用哪个处理器,但如果处理器有指令跳转到常规寄存器中的地址,那当然是最简单的方法。例如,ARM可以执行此操作,so can x86。
当然,如何将参数传递给子例程取决于程序员的程序集。您可以传入寄存器或堆栈,只要您可以生成呼叫,这无关紧要。黑客攻击堆栈指针本身似乎很尴尬和奇怪。
答案 1 :(得分:1)
好的,所以它相对简单:
aFunction:
;do stuff here
ret
callFunctionInEax:
call eax
ret
main:
mov eax, aFunction
call callFunctionInEax
ret