程式執行的詳細過程

2021-06-20 23:12:49 字數 693 閱讀 4432

詳細執行流程:

(1)啟動函式

檢索命令列指標

-》初始化全域性變數,堆疊等。

(2)進入

winmain()

:call 00401000

根據不同的呼叫約定執行不同的壓棧順序。

_stdcallwinapi,

壓棧順序為從右向左,由系統自動執行棧的**。

_cdeclc

呼叫約定

壓棧順序為從右向左,由呼叫者執行棧**。

pascal

壓棧順序為從左向右,由系統自動執行棧**。這裡系統為被呼叫

_fastcall

暫存器thiscall

物件導向特有的

this

指標,同

winapi,c

呼叫約定,只是需要暫存器儲存

this

指標堆疊形成順序

區域性變數

返回位址

函式引數

同時應注意名字改編問題:由呼叫約定

+編譯器共同決定。(3

)載入動態鏈結庫

載入靜態鏈結庫,將函式全部以二進位制形式載入到指定位置。(lib)

靜態載入動態連線庫,

一次性載入所有要用的dll。(lib,#import)

動態載入動態連線庫,需要的時候載入制定函式。(def)

參考文獻:加密解密(第三版)

程式執行過程

要理解乙個程式的執行過程,首先要理解什麼是編譯器。我們用c語言寫的程式,計算機只能識別機器語言 二進位制指令 計算機並不能理解。因此,必須 將c語言轉換為機器語言。編譯器就是用來實現這一功能的。編譯器將源 檔案按照一定的對應規則映射程計算機能夠識別的二進位制指令 關於原始檔 目標檔案和可執行檔案 原...

程式執行過程

程式的執行過程大致分為以下四的步驟 1 預處理 2 編譯 3 彙編 4 鏈結 1.關於預處理 預處理階段的工作基本上是對源程式做 替代 主要有 巨集替換 條件編譯 標頭檔案展開 去除注釋 經過這番替換之後,就會生成乙個沒有巨集定義,沒有條件編譯 沒有特殊符號的輸出檔案。2.關於編譯 編譯階段的工作就...

程式執行過程

程式執行過程 不同作業系統可執行檔案的格式不同 linux elf execuatable and linkable file format windows pe portable executable format 這也是為什麼乙個程式無法同時在linux和windows下執行 這裡舉例elf檔案...