5.长调用与短调用

我们通过JMP FAR可以实现段间的跳转,如果要实现跨段的调用就必须要学习CALL FAR,也就是长调用.
CALL FAR比JMP FAR要复杂, JMP并不影响堆栈但CALL指令会影响.


长调用会先将调用者cs压栈,再将返回地址压栈,esp+8

随者权限的变化堆栈就会切换

 

总结:
1跨段调用时,一日有权限切换,就会切换堆栈.
2CS的权限一旦改变, SS的权限也要随着改变, CS与SS的等级必须一样.
3JMP FAR只能跳转到同级非一致代码段,但CALL FAR可以通过调用门提权,提升CPL的权限.

SS与ESP从哪里来?参见TSS段.

原文地址:https://www.cnblogs.com/weekbo/p/10437059.html