lesson21 函式在彙編中的過程

2021-07-23 05:08:11 字數 1171 閱讀 4009

//lea取位址

//call 函式名(函式位址)

int bigernum = greater(10, 100);
009616fe push 64h//傳入第乙個引數

00961700 push 0ah//傳入第二個引數

00961702 call _greater (0961221h)

00961707 add esp,8

0096170a mov dword ptr [bigernum],eax //eax常用作函式的返回值bigernum為ebp-8,還原棧

int greater(int first, int second)

008e16bb jmp greater+30h (08e16c0h)

else

return second;

008e16bd mov eax,dword ptr [second]

}int greater(int *first, int *second)

*first = *second;              //*解引用操作,取出位址中的值
009a16ae mov eax,dword ptr [first] //中擴號,取值操作first的值給eax

009a16b1 mov ecx,dword ptr [second]

009a16b4 mov edx,dword ptr [ecx]

009a16b6 mov dword ptr [eax],edx //edx的值賦值給eax所指向的值

int big = greater(&first,&second);
01164156 lea eax,[second]//lea取位址給eax

01164159 push eax

0116415a lea ecx,[first]

0116415d push ecx

0116415e call _greater (01161221h)

01164163 add esp,8

01164166 mov dword ptr [big],eax

return 0;

在C程式中呼叫彙編函式

在趙炯的 linux核心完全剖析 中有乙個在c程式中呼叫彙編函式的介紹 執行as o callee.o callee.s的時候遇到錯誤 callee.s 7 error invalid instruction suffix for push 參考文章 感謝作者 在callee.s中加入 code32...

BeaEngine反彙編引擎在C中的使用

beaengine是乙個開源的反編譯引擎,官網為 支援多種語言,比如 python vc masm32 delphi 等。由於我在使用的時候遇到了很多問題,所以在這裡介紹一下它在vs中的具體應用及問題解決方法。beaengine的所有 布局安排同這個示例 在cpp檔案中貼上examples中的示例 ...

在C 中函式的研究

初學者往往會對函式這樣的問題比較的困惑,比如說 函式的引數方法以及函式的返回型別.對於這些問題如果沒有乙個系統了解,務必會是更深層次學習的乙個絆腳石.下面我就在c 中函式若干問題加以研究,希望各位學員能夠有深層次的了解.1.函式引數的傳遞方法.我們知道函式具體實現的時候需要從主調函式傳遞引數到被調函...