qq408477779 发表于 2016-11-22 10:51:49

一个函数的返回地址存放在哪个寄存器里面啊。不是返回值。

RT。

zzxzxj888 发表于 2016-11-22 11:33:21

本帖最后由 zzxzxj888 于 2016-11-22 12:41 编辑

{:5_90:}

zzxzxj888 发表于 2016-11-22 12:41:12

zzxzxj888 发表于 2016-11-22 11:33


{:5_90:}

人造人 发表于 2016-11-22 19:02:00

函数的返回地址在堆栈中

xieglt 发表于 2016-11-22 19:02:06

在在寄存器里,在栈里

qq408477779 发表于 2016-12-26 15:22:02

xieglt 发表于 2016-11-22 19:02
在在寄存器里,在栈里

好的。谢谢了

qq408477779 发表于 2016-12-26 15:37:08

xieglt 发表于 2016-11-22 19:02
在在寄存器里,在栈里

是ss段吗。64位下呢。看哪个呢

xieglt 发表于 2017-1-10 15:20:36

qq408477779 发表于 2016-12-26 15:37
是ss段吗。64位下呢。看哪个呢

16位函数调用演示
一、CALL , RET 调用函数
函数:
_MyfunPROC
      ...
      RET
_MyfunENDP
调用:
CALL_Myfun

二、用 PUSH/POP 和 JMP 模拟函数调用
函数:
_MyfunPROC
      POPAX
      POPDS
      JMP   DS:AX
_MyfunENDP
调用:
       PUSHCS
       PUSHOFFSET _ReturnAddress
       JMP   _Myfun
_ReturnAddress:

32位下写法
_MyfunPROC
       RET
_MyfunENDP

CALL_Myfun

PUSH/POPJMP模拟:
_Myfun   PROC
       POP   EAX
       JMP    EAX
_Myfun   ENDP

       PUSH OFFSET _ReturnAddress
       JMP_Myfun
_ReturnAddress:

xieglt 发表于 2017-1-10 15:21:26

qq408477779 发表于 2016-12-26 15:37
是ss段吗。64位下呢。看哪个呢

64位的我不懂
页: [1]
查看完整版本: 一个函数的返回地址存放在哪个寄存器里面啊。不是返回值。