[英]x86 ASM: how return to different code segment is implemented?
我已经熟悉PCASM书籍,但我一无所知 (可能只是我的误解,我还是低级编程的新手)。 有人说c调用约定类似于
call
指令来调用该子例程,该子例程除其他事项外,还将把返回地址压入堆栈 ESP
添加常量偏移量的参数 ret
,它将弹出返回地址(然后根据需要弹出参数),并使用它跳回到调用代码 到目前为止,一切都很好,但是示例表明返回代码只是堆栈上的四个字节。 这允许在当前代码段上跳转到任何地方,但是如果子例程必须返回到另一个段怎么办? 如果必须以与返回地址相同的方式将代码段压入堆栈,那么应该如何引用子例程中的参数(因为它们在近距和远距返回时会有不同的偏移量)?
retf
指令执行包括分段和偏移量的“长返回”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.