隨筆總結:8086CPU的棧頂超界問題
阿新 • • 發佈:2022-04-17
我們學習程式設計都知道棧的超界限問題是非常嚴重的問題,他可能會覆蓋掉其他資料,並且我們不知道這個資料是我們自己儲存的用於其他用途的資料還是系統的資料,這樣常常容易引發一連串的問題。
在學習彙編的時候,我們熟悉的8086cpu通過ss:sp來指向棧頂指標,從而來控制入棧,出棧,入棧的時候sp = sp-2 ;出棧則是sp = sp + 2。但是我們並不知道棧的大小,棧頂和棧底在哪裡?這樣就容易引發超界問題。
想一想解決辦法:我們是不是可以通過一個暫存器來儲存棧頂和棧底的地址,這樣就可以通過判定棧頂指標的地址來判定是否在這個棧的空間內,細細一想,方案的確可行,但是這並不是我們想當然的事情,而是cpu設計上的事情。
但是實際上8086cpu並沒有這樣的暫存器功能,這就只能我們自己進行判斷了,從而來防止超界問題的出現。可能這就是8086的設計缺陷吧,無法通過系統內部機制,去控制超界問題。