彙編 以例項分析 INVOKE 和 call區別

2021-09-29 04:19:31 字數 1257 閱讀 8804

例子:

我先把框架程式放在下面,然後我們再向裡面加東西。

.386

.model flat, stdcall

.data

.code

start:

end start

應用程式的執行是從 end 定義的識別符號後的第一條語句開始的。在上面的框架程式中就是從 start 開始。程式逐條語句執行一直到遇到 jmp,jne,je,ret 等跳轉指令。這些跳轉指令將把執行權轉移到其他語句上,若程式要退出 windows,則必須呼叫函式 exitprocess。

exitprocess proto uexitcode:dword
functionname proto [parametername]:datatype,[parametername]:datatype,...
簡言之,就是在函式名後加偽指令proto,再跟一串由逗號相隔的資料型別鍊錶。在前面的 exitprocess 定義中,該函式有乙個 dword 型別的引數。當您使用高層呼叫語句 invoke 時,使用函式原型定義特別有用,您可以簡單地認為 invoke 是乙個有引數型別檢查的呼叫語句。譬如,假設您這樣寫:

call exitprocess
invoke exitprocess
invoke expression [,arguments]
好,我們現在回到exitprocess 函式,引數uexitcode 是您希望當您的應用程式結束時傳遞 windows 的。 您可以這樣寫:

invoke exitprocess,0
把這一行放到開始識別符號下,這個應用程式就會立即退出 windows,當然毫無疑問個應用程式本身是乙個完整的 windows 程式。

.386

.model flat, stdcall

option casemap:none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

includelib \masm32\lib\kernel32.lib

.data

.code

start:

invoke exitprocess,0

end start

例項分析Erlang的彙編指令

erlang虛擬機器 vm 簡介 一文中介紹的暫存器和指令引數型別是學習erlang vm相關知識的基礎,也是理解本文內容的前提,這裡就不贅述了。先看將要分析的例項的erlang源 mytest.erl module mytest compile export all 返回atom t1 ok.呼叫...

C 中is和as用法例項分析

現來看個例子 public class user public class group class program 這樣會報錯 invalidcastexception 由於c 安全機制,它會去判斷一次。我們這裡做了非法的轉換。is做判斷 is說判斷物件是不是你要的那個型別 這裡說user 修改後的...

簡單例項分析objdump反彙編用法

objdump rds 可可執行檔案 objdump命令是用檢視目標檔案或者可執行的目標檔案的構成的gcc 工具。1.準備 hello.c include include include module license gpl module author baoli module descriptio...