汇编语言编写的程序,子程序的结尾用到ret与ret 参数对主程序有什么影响?

2025-01-05 11:54:15
推荐回答(3个)
回答1:

如果只是用到不带参数的ret的话,就是返回主程序的时候pop出之前push的ip(远转移的话还有cs)。如果用的是带参数的ret的话,也就是retf指令,参数n表示在ret的基础上还在再将sp指针向后移动n个字节。也就是不仅仅弹出ip和cs,还多弹出了数据。

回答2:

没影响,不用才会影响,
ret是对于CALL后的返回,即恢复CALL时入栈的EIP值,应该是属于短跳吧。
长跳的要恢复ECS,EIP两寄存器,好像是用retn,

回答3:

子程序是RET,如果是中断必须是RETI