彙編中的堆疊傳參

2021-10-02 22:03:39 字數 475 閱讀 5431

這個堆疊傳參,就好比你想吃糖,可是你左邊的口袋裡已經裝滿了瓜子,所以你只能,先把糖放入右邊口袋,當你需要吃糖的時候。在從右邊口袋裡把糖取出來,就這麼簡單,這就是堆疊傳參,左邊口袋是通用暫存器,右邊口袋就是堆疊。糖果就是引數,向口袋放糖和從口袋拿糖就是呼叫堆疊,吃糖這個動作就是執行程式。

當我們在執行函式呼叫時,暫存器不夠用的時候,我們可以使用堆疊傳參,比如說,我們要計算任意10個引數相加的和,如果按照之前文章的辦法,我們會使用mov這個指令把引數傳遞到暫存器中進行計算,但是通用暫存器只有八個,我們現在要傳遞十個引數,這時候就可以使用堆疊傳參了。

直接上分析圖:

這裡函式執行多加4是因為呼叫call的時候程式會把call下一行的位址壓入棧頂以便retn返回,所以得多加4,這裡壓入10個資料太麻煩,所以簡化了一下,不過具體實現方法就是如圖所示。

彙編之函式 堆疊傳參

函式就是一系列指令的集合,為了完成某個會重複使用的特定功能。比如 mov eax,1 mov ecx,1 就相當於乙個函式 指令的集合 1 使用jmp來執行函式 2 使用call來執行函式 以四條指令向普通暫存器儲存值為例 call執行前 call執行後 f8 可以看到call指令把當前指令的下一條...

形參中的動態傳參

1.形參的分類 形參可分為位置引數 按照位置接收引數 預設值引數 只有當實參中不給出缺省項時起作用 動態引數,其中動態引數又分為兩種,位置引數的動態傳參和關鍵字引數的動態傳參。重點區分兩種動態引數 1.1位置引數的動態傳參 表示不定傳參,可以接收任意個位置引數,引數名是args,其接收的結果為元祖 ...

Vue中的傳參

一 普通方式 1 動態路由引數 路由 component resolve require views page pagedetail.vue resolve 頁面使用 pagedetail id 詳情 router link 獲取引數 this route.params.id2 params傳參 重...