国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

函數(shù)調(diào)用棧圖解 計(jì)算機(jī)二級(jí)C語(yǔ)言。為什么棧,支持,子程序,調(diào)用?

堆棧是一個(gè)進(jìn)退線性表。只能從一端插入和刪除。當(dāng)主程序調(diào)用子函數(shù)時(shí),它保存主函數(shù)的當(dāng)前狀態(tài),然后轉(zhuǎn)移到子函數(shù)的執(zhí)行,最后將子函數(shù)的結(jié)果返回到主函數(shù)中子函數(shù)的位置,并繼續(xù)執(zhí)行,這被稱為堆棧支持的子例程。計(jì)

堆棧是一個(gè)進(jìn)退線性表。只能從一端插入和刪除。當(dāng)主程序調(diào)用子函數(shù)時(shí),它保存主函數(shù)的當(dāng)前狀態(tài),然后轉(zhuǎn)移到子函數(shù)的執(zhí)行,最后將子函數(shù)的結(jié)果返回到主函數(shù)中子函數(shù)的位置,并繼續(xù)執(zhí)行,這被稱為堆棧支持的子例程。

計(jì)算機(jī)二級(jí)C語(yǔ)言。為什么棧,支持,子程序,調(diào)用?

傳統(tǒng)方法不行。調(diào)用函數(shù)是一個(gè)堆棧壓縮過(guò)程。當(dāng)子函數(shù)返回時(shí),堆棧將彈出。堆棧溢出是可以的,這就是我們常說(shuō)的“緩沖區(qū)溢出攻擊”,可以調(diào)用任意代碼(這是C的強(qiáng)項(xiàng))。

子程序調(diào)用子程序后可不可以直接返回主程序?

在各種通用平臺(tái)中,子程序的調(diào)用過(guò)程是相似的。讀取和解碼子程序調(diào)用指令后,首先保存當(dāng)前程序的斷點(diǎn)地址。不同的硬件平臺(tái)有不同的保存方式,有的按棧保存,有的保存到特定的寄存器中;然后將子程序的入口地址設(shè)置為當(dāng)前程序地址,然后讀取并執(zhí)行子程序。子程序結(jié)束后,通過(guò)指令返回調(diào)用點(diǎn),返回值通過(guò)寄存器或堆棧給出。CPU將取出先前保存的斷點(diǎn)地址并將其設(shè)置為當(dāng)前程序指針,然后繼續(xù)執(zhí)行主程序。因此,為了保證調(diào)用后的執(zhí)行環(huán)境與調(diào)用前相同,通常需要在子程序開(kāi)始時(shí)保存相關(guān)寄存器環(huán)境,并在子程序結(jié)束前恢復(fù)這些寄存器。