最原始基本的CPU函式呼叫過程概念

2021-10-09 09:04:25 字數 509 閱讀 2394

assume cs:code

code segment

start: mov ax,1

mov cx,3

call s

mov bx,ax

mov ax,4c00h

int 21h

s: add ax,ax

loop s

retcode ends

end start

1.cpu將call s 指令的機器碼讀入,ip 指向 call s之後的指令 mov bx,ax,然後cpu執行call s指令,將當前ip值(指令 mov bx,ax的位址)壓棧,並將ip值改變為標號s處的偏移位址。

2.在s內部,執行完後,執行到ret時,cpu將ret指令的機器碼讀入,ip指向了ret指令,從棧中彈出乙個值(即call s先前壓入的mov bx,ax指令偏離位址)送入ip,則此時cs:ip執行指令mov bx,ax,

3.cpu從call s之後的指令mov bx,ax繼續執行。

函式的呼叫過程

計算機在執行呼叫函式的過程中,會根據函式完成一些工作,比如資料的傳遞 形參拷貝 返回值 記憶體的分配和釋放 執行控制和轉移,這些操作需要通過形成乙個棧幀來完成。棧幀 stack frame 棧幀就是函式執行的環境。每個函式在被呼叫的時候都會在棧區形成乙個叫做棧幀的結構,這個結構儲存了函式引數 區域性...

C函式的呼叫過程

c函式的引數傳遞過程 基礎知識 函式呼叫的本質將在這裡得到闡明。首先請讀者理解堆疊的操作。函式和堆疊的關係密切,這是因為 c語言程式通過堆疊把引數從函式外部傳入到函式內部。此外,在堆疊中劃分區域來容納函式的內部變數。呼叫push和pop指令的時候,暫存器 esp用於指向棧頂的位置 棧頂總是棧中位址最...

函式遞迴的呼叫過程

函式遞迴的呼叫過程 當函式n 5時,fact n 1 時要呼叫n 4,所以依次呼叫,上圖所示就是函式的呼叫,當n 0時返回到n 1一直到n 5的函式呼叫 例項解析 字串反轉 將字串s反轉後輸出,s 1 將列表中,從頭到尾以 1的步長輸出,而 1的步長就是指從後往前輸出 函式 分支結構 遞迴鏈條 遞迴...