函式的呼叫(彙編程式碼分析)
1.sum函式呼叫完為什麼會回退到main函式的呼叫棧針上。
2.為什麼呼叫完後會從下一行執行。
3.值是怎麼傳遞的,是形參開闢記憶體,還是實參開闢。
# include<stdio.h>
int sum(int first,int second)
{
int tmp;
tmp = first+second;
return tmp;
}
int main()
{
int a = 10;
int b = 20;
int rt = sum(a,b);
return 0;
}
1.設定斷點,啟動debug模式。
2.除錯-》視窗-》反彙編得到下圖所示彙編程式碼。
分析彙編程式碼:
push:壓棧
pop:出棧,把棧上資料給暫存器
call:1.壓入下一行地址,2,jump跳轉到(sum)函式棧頂
mov:把數值移動到暫存器
lea:挪指標
add:累加
sub:減
pc暫存器:存放一條指令的地址。
暫存器入棧,相當於在棧頂開闢記憶體,這塊記憶體即為形參地址空間。
eax ebx ecx是存放數值的暫存器。
ebp棧底指標暫存器
esp棧頂指標暫存器
引數傳遞的方向:從右向左。函式的返回值由暫存器帶回。
形參開闢記憶體在main函式上。
相關推薦
函式的呼叫(彙編程式碼分析)
1.sum函式呼叫完為什麼會回退到main函式的呼叫棧針上。 2.為什麼呼叫完後會從下一行執行。 3.值是怎麼傳遞的,是形參開闢記憶體,還是實參開闢。 # include<stdio.h> int sum(int first,int second)
如何有效的清除Android中無用的資源(靜態程式碼分析)
最近公司要做這個,簡單調研了一下,現有的大多數部落格也比較舊了,不太合適,總結了這麼幾個方式吧,一起來學習下。 為什麼要清除Android中這些資源呢 是這樣的,今天收到的郵件裡,有這麼一條任務: 資源優化 軟體中無用的圖片和佈局檔案,找到並驗證是否無用. 這個需要設計一套工具進行分析(自
VC++函式呼叫過程彙編分析(基於vs2012)
本文將在VS2012環境下對函式呼叫過程的彙編程式碼進行分析。分析不到位或者存在錯誤的地方請批評指正,請與作者聯絡。 #include <iostream> #include <stack> #include <vector> #inc
super關鍵字(以android程式碼分析)
super關鍵字的核心就是指代當前類的父類。 1.super(“若干引數”); 放在子類構造方法的首行,表示呼叫父類中包含若干引數的構造方法。 super(); -------呼叫父類中的無參構造 super(引數1,引數2);------------呼叫父
linux核心剖析---Linux系統呼叫詳解(實現機制分析)
本文介紹了系統呼叫的一些實現細節。首先分析了系統呼叫的意義,它們與庫函式和應用程式介面(API)有怎樣的關係。然後,我們考察了Linux核心如何實現系統呼叫,以及執行系統呼叫的連鎖反應:陷入核心,傳遞系統呼叫號和引數,執行正確的系統呼叫函式,並把返回值帶回使用者空間。最後
linux驅動由淺入深系列:usb子系統之四(android平臺滑鼠驅動程式碼分析)
android上的usb口是支援OTG(on the go)的,USB OTG既可以作為Host又可以作為Device,我們本文來看一下android手機作為Host連線滑鼠的情況。OTG是如何做到既可以做Host又可以作為Device的呢 標準usb接頭中有四根線:vbu
Web前端面試筆試題2——JS(1):函式呼叫(區域性變數/全域性變數)
1、函式呼叫——區域性變數/全域性變數 案例1-1:fun(a)函式有傳參,即可更改“區域性變數” var a=100; function fun(a){ a++; consol
linux驅動由淺入深系列:camera驅動之二(基於高通平臺的V4L2結構及程式碼分析)
在上一篇文章中介紹了camera的基礎知識和相關概念,我們一起來了解一下驅動相關的程式碼結構。本文以高通+android平臺為示例,首先看一下整體框圖:這張圖是從整體上來看的1,圖中最下面的是kernel層的驅動,其中按照V4L2架構實現了camera sensor等驅動,向
Android漫遊記(5)---ARM GCC 內聯彙編烹飪書(附例項分析)
關於本文件 GNU C編譯器針對ARM RISC處理器,提供了內聯彙編支援。利用這一非常酷炫的特性,我們可以用來優化軟體程式碼中的關鍵部分,或者可以使用針對特定處理的彙編處理指令。 本文假定,你已經熟悉ARM組合語言。本文不是一篇ARM彙編教程
PCA(主成分分析) 降維演算法詳解 和程式碼
1. 前言 PCA : principal component analysis ( 主成分分析) 最近發現我的一篇關於PCA演算法總結以及個人理解的部落格的訪問量比較高, 剛好目前又重新學習了一下PCA (主成分分析) 降維演算法, 所以打算把目前掌握的做個全面的
彙編dos系統呼叫(輸入輸出篇)
程式設計師編寫彙編程式,不可避免要與底層的各種裝置打交道,比如:簡單的鍵盤輸入,顯示器輸出,磁碟檔案的讀寫或印表機的列印。而要完成這些工作需要清楚有關裝置的結構組成,非常複雜。 然而,現在我們有dos作業系統,它開發了許多裝置驅動與檔案管理的子程式。彙編程式設計師使用這些子
關於C++函式呼叫(返回)傳值的思考!
今天做了一道題,不能使用全域性變數,main函式不能改變,只能改變呼叫函式,也用不了指標,所以想了許久,查找了許多資料,把過去知道的引用實踐了。 返回值只能返回一個值,但是需要的值可能需要有多了,那麼我們就需要有傳值,怎麼把值傳遞到該去的位置,有三個辦法。值傳遞
怎樣讓一個函式有不定長的引數列表?(附程式碼例項)
一、什麼是可變引數列表? 我相信只要學過C語言,就一定用過 scanf() 和 printf() 兩個標準庫函式。用過的朋友都知道,這兩個函式功能強大無比,能輸入輸出各種各樣型別的東西!
PCA (主成分分析)詳解 (寫給初學者) 結合matlab(轉載)
整數 變量 行為 保持 sum osc 入參 函數 data 一、簡介 PCA(Principal Components Analysis)即主成分分析,是圖像處理中經常用到的降維方法,大家知道,我們在處理有關數字圖像處理方面的問題時,比如經常用的圖像的查詢
vue 實現 ios 原生picker 效果(實現思路分析)
sta 效果 cursor touchend orm dex tex sub alt 以前最早實現了一個類似的時間選擇插件,但是適用範圍太窄,索性最近要把這個實現方式發布出來,就重寫了一個高復用的vue組件。 支持安卓4.0以上,safari 7以上 效果預覽 gitHu
算法分析| 集1(漸近分析)
style 獲得 判斷 永遠 算法 大小為n 大於 set 讓我 為什麽分析算法性能? 應該照顧好許多重要的事情,如用戶友好,模塊化,安全性,可維護性等。為什麽要擔心性能? 對此的答案很簡單,只有我們有表現,才能有上述所有的東西。 比如我們如果表現像貨幣,我們可以買
算法分析| 第4集(循環分析)
使用 hms other == tle 評估 選擇排序 文章 font 我們在之前的帖子中討論了漸近分析, 最差,平均和最佳案例 還有漸近符號。 在這篇文章中,討論了使用簡單示例分析叠代程序。 1)O(1):如果一個函數(或一組語句)不包含循環,遞歸和調用任何其他非常
建庫建表學習心得(知識點誤點分析)
.cn 分析 說明 log courses 應該 code 主健 字符類型 建庫建表知識點(下列舉例)、 建庫: CREATE DATABASE EduBase2017 ON (NAME=‘Datefile_1‘ ,FILEN
Go語言Context(設計及分析)
sin 循環 elf 處理請求 val pri inter text ont context簡單概述:Go服務器的每個請求都有自己的goroutine,而有的請求為了提高性能,會經常啟動額外的goroutine處理請求,當該請求被取消或超時,該請求上的所有goroutine
[python] 詞雲:wordcloud包的安裝、使用、原理(源碼分析)、中文詞雲生成、代碼重寫
possible 渲染 alias com 表達 問題 compute ural pty 詞雲,又稱文字雲、標簽雲,是對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表