程式在進行入口函式位址執行之前,先將執行下列函式,為程式的執行準備環境。入口函式位址有三個引數,分別為命令列引數個數,命令引數資訊和環境變數資訊,main函式作為啟動三個引數的唯一函式。
main函式被呼叫前先要呼叫的函式如下:
getversion();
獲取當前執行平台的版本號。控制台程式執行在windows模擬的dos下,因此這裡獲取的版本好為ms-dos的版本資訊。
_heap_init();
用於初始化堆疊空間。在函式實現中使用heapcreate申請堆空間,申請空間的大小由_heap_init傳遞的引數決定。_sbh_heap_init函式用於初始化堆結構資訊。
getcommandline();
獲取命令列引數資訊的首位址。
_crtgetenvironmentstringa();
獲取環境變數資訊的首位址。
_setar**();
此函式根據getcommandlinea獲取命令列引數資訊的首位址並進行引數分析,將分離的引數的個數儲存在全域性變數_argc中,將分析的每個命令列引數的首位址放在陣列中,並將這個字串指標的首位址儲存在全域性變數_ar**中。
_setenvp();
此函式根據_crtgetenvironmentstringa函式獲取環境變數資訊的首位址並進行分析,將得到命令列引數的個數,以及命令列引數資訊。
_cinit();
用於將全域性資料和浮點暫存器的初始化。全域性物件和io流等的初始化都是通過這個函式實現的。利用函式_inittern進行資料鏈初始化,這個函式由兩個引數組成,型別為「_pvfv*",這是乙個函式指標陣列,其中保留了每個初始化函式的位址。初始化函式的型別為_pvfv.
函式 入口位址 返回位址
2009 07 30 17 41 44 分類 c語言學習 標籤 字型大小 大中小訂閱 陣列的名字代表的是陣列的首位址 函式的名字代表的就是函式的入口位址。可以列印一下 include void hello world void printf hello world n void hello baby...
鍊錶中環的入口位址
題目 乙個鍊錶中包含環,如何找出環的入口節點。思路 假設鍊錶中存在環,先求出環中的節點個數n。用快慢指標找到環的入口 快指標先行走n步,慢指標再行走,當快慢指標相遇時,就是鍊錶中環的入口。public listnode entrynodeofloop listnode phead listnode ...
171005 逆向 IAT匯入位址表
1625 5 王子昂 總結 2017年10月5日 連續第370天總結 a.iat匯入位址表 b.iat,匯入位址表,用來記錄程式正在使用哪些庫中的哪些函式 dll動態鏈結庫,是win特有的系統。早在dos時代還沒有dll時,只有庫一說。當需要使用庫函式時,編譯器會將庫函式一起插入到應用程式中。到了w...