5.长调用与短调用
我們通過JMP FAR可以實現(xiàn)段間的跳轉(zhuǎn),如果要實現(xiàn)跨段的調(diào)用就必須要學習CALL FAR,也就是長調(diào)用.
CALL FAR比JMP FAR要復雜, JMP并不影響堆棧但CALL指令會影響.
長調(diào)用會先將調(diào)用者cs壓棧,再將返回地址壓棧,esp+8
隨者權(quán)限的變化堆棧就會切換
總結(jié):
1跨段調(diào)用時,一日有權(quán)限切換,就會切換堆棧.
2CS的權(quán)限一旦改變, SS的權(quán)限也要隨著改變, CS與SS的等級必須一樣.
3JMP FAR只能跳轉(zhuǎn)到同級非一致代碼段,但CALL FAR可以通過調(diào)用門提權(quán),提升CPL的權(quán)限.
SS與ESP從哪里來?參見TSS段.
總結(jié)