亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASM > 正文

計算機(jī)是如何工作的?--通過匯編一個簡單的C程序,分析匯編代碼理解計算機(jī)是如何工作的

2019-11-08 18:24:51
字體:
供稿:網(wǎng)友

王雪 原創(chuàng)作品轉(zhuǎn)載請注明出處 《linux內(nèi)核分析》MOOC課程 http://mooc.study.163.com/course/USTC-1000029000

一、理論基礎(chǔ) (1)馮諾依曼體系結(jié)構(gòu):存儲程序計算機(jī)的工作模型 這里寫圖片描述 從硬件角度看程序的執(zhí)行過程:其中ip(instruction pointer)為CPU中的寄存器,指向內(nèi)存中的某一塊,CPU執(zhí)行指令時,會從IP中取出一條指令后執(zhí)行,執(zhí)行過后,IP自加一(增加一個指令的長度),取下一條指令執(zhí)行。 從程序員的角度看: CPU是一個大的for循環(huán),不停地執(zhí)行next instruction命令,存儲器主要負(fù)責(zé)數(shù)據(jù)和代碼等信息的存儲,CPU與Main Memory通過總線進(jìn)行連接。 注意: 1.程序員不可以直接修改IP的值,只能通過一些指令,如CALL、RET、JMP等間接修改IP的值 2.IP在32位機(jī)器中表示為eip(本次實驗以32位作為分析),在64位機(jī)器中表示為rip。 (2)x86匯編基礎(chǔ)知識(32位機(jī)器) 一.寄存器:在x86體系中,寄存器可分為通用寄存器、段寄存器、標(biāo)志寄存器 1通用寄存器: EAX:累加器 EBX:基地址寄存器 ECX:計數(shù)寄存器 EDX:數(shù)據(jù)寄存器 EBP:堆?;羔?ESI,EDI:變址寄存器 ESP:堆棧頂指針 2.段寄存器:CS,DS,ES,SS,FS,GS 3.標(biāo)志寄存器 CPU在實際取指令時根據(jù)CS:eip來準(zhǔn)確確定某一個指令在內(nèi)存中的地址。 二:匯編指令(以常見的MOV,PUSH,POP,CALL等進(jìn)行說明) (1)MOV指令及尋址方式 1.MOV指令,能實現(xiàn)以下操作: ① CPU內(nèi)部寄存器之間數(shù)據(jù)的任意傳送(除了碼段寄存器CS和指令指針I(yè)P以外)。 ② 立即數(shù)傳送至CPU內(nèi)部的通用寄存器組(即AX、BX、CX、DX、BP、SP、SI、DI),給這些寄存器賦初值。 ③ CPU內(nèi)部寄存器(除了CS和IP以外)與存儲器(所有尋址方式)之間的數(shù)據(jù)傳送,可以實現(xiàn)一個字節(jié)或一個字的傳送。 ④ 能實現(xiàn)用立即數(shù)給存儲單元賦初值。 movb,movl,movw,movq分別針對8位,16位,32位,64位系統(tǒng) (2)pushl和pop指令,pushl用于入棧(棧的擴(kuò)張),pop用于出棧(棧的收縮) 棧是向下生長的,也就是說棧底位于高地址,棧頂位于低地址,用ebp指向棧底,用esp指向棧頂。 入棧操作:pushl %eax完成的操作包括兩步

subl $4,%espmovl %eax,(%esp)

出棧操作:pop %eax完成的操作包括兩步

movl (%esp),%eaxaddl $4,%esp

(3)CALL主要用于函數(shù)調(diào)用 call 0x12345 完成的操作包括兩步

push %eipmovl %0x12345,%eip

(4)RET指令用于恢復(fù)操作,完成pop %eip操作 (5)enter和leave操作 enter 置為空棧,完成的操作包括兩步

pushl %ebpmovl %esp,%ebp

leave用于撤銷函數(shù)調(diào)用堆棧,完成的操作包括兩步

movl %ebp,%esppopl %ebp

注: (1)函數(shù)調(diào)用堆棧是由邏輯上多個堆棧疊加起來的(比如函數(shù)的嵌套) (2)函數(shù)的返回值默認(rèn)使用eax寄存器存儲返回給上一級函數(shù) (3)一定要注意的是eip不能由程序員直接修改,程序員想修改eip只能通過特殊指令間接修改。 2.尋址方式 (1)寄存器尋址(不訪問內(nèi)存) movl % eax,% edx <==>edx= eax,將eax中的值賦值給edx (2)立即尋址(不訪問內(nèi)存)用$表示立即數(shù) movl $ 0x1234,%edx <==>edx = 0x1234 (3)直接尋址 movl 0x123,%edx <==>edx = * (int32_t*)0x123 將內(nèi)存地址0x123所指向的內(nèi)存數(shù)據(jù)賦值給edx (4)間接尋址 movl (%ebx),%edx <==>edx = * (int32_t*)ebx (5)變址尋址 movl 4(%ebx),%edx <==>edx = * (int32_t*)(ebx+4) 二、通過實驗分析計算機(jī)是如何工作的 (1)實驗代碼與截圖 在實驗樓的linux終端下創(chuàng)建一個main.c文件(注意實驗樓的環(huán)境為64位) main.c中的內(nèi)容 利用指令(64位下生成32位的匯編文件)

gcc –S –o main.s main.c -m32

這里寫圖片描述 進(jìn)入main.s匯編文件,去掉所有以.開始的代碼行(以.開始的代碼是連接時的輔助信息)得到純匯編代碼 這里寫圖片描述 可以看到剛才介紹過的指令操作。 (2)實驗分析——-對執(zhí)行過程的分析 與C語言類似,匯編代碼的入口也為main函數(shù) 初始時棧的狀態(tài) 這里寫圖片描述 進(jìn)入main函數(shù),執(zhí)行18行代碼

pushl %ebp

執(zhí)行后棧的狀態(tài) 這里寫圖片描述 0標(biāo)號下下存放ebp的內(nèi)容,esp指向標(biāo)號1處

movl %esp,%ebp

這里寫圖片描述 esp和ebp指向相同位置

subl $4,%esp

這里寫圖片描述

movl $8,(%esp)

這里寫圖片描述

call f

執(zhí)行call時實際執(zhí)行兩個動作,pushl %eip ; movl f ,%eip 此時eip指向第23行代碼 這里寫圖片描述 執(zhí)行后,eip指向f 跳轉(zhuǎn)到f中執(zhí)行:

pushl %ebpmovl %esp,%ebpsubl $4,%esp

這里寫圖片描述 在執(zhí)行過movl%esp,%ebp后,esp和ebp置于相同的標(biāo)號處(4) 執(zhí)行subl $4,%esp,esp向下移動到標(biāo)號5 這里寫圖片描述

movl 8(%ebp),%eaxmovl %eax,(%esp)

movl 8(%ebp),%eax 變址尋址,將ebp(此處為標(biāo)號4)加8(向上移動兩個標(biāo)號,也就是標(biāo)號2處)的值賦給eax,所以%eax = 8 movl %eax,(%esp),將eax的內(nèi)容也就是8賦值到esp下也就是標(biāo)號5處 這里寫圖片描述

call gleave

執(zhí)行call時實際執(zhí)行兩個動作,pushl %eip ; movl g,%eip 此時eip指向第15行代碼leave的位置,此時eip指向g跳轉(zhuǎn)到g中去執(zhí)行 這里寫圖片描述 在g中執(zhí)行:

pushl %ebpmovl %esp,%ebp

pushl %ebp同上,將esp向下移動,將ebp(標(biāo)號為4)壓棧 這里寫圖片描述 movl %esp,%ebp esp和ebp指向相同的位置 這里寫圖片描述

movl 8(%ebp),%eax

強(qiáng)ebp向上移動兩個標(biāo)號的值(也就是8)賦給eax

addl $57,%eaxpopl %ebpret

%eax中存放的值為8,addl操作,將eax的值與立即數(shù)57相加,結(jié)果為65,將65存回到eax popl %ebp,將ebp的值放回到ebp,執(zhí)行效果:ebp重新指向標(biāo)號為4的位置,同時esp減4 這里寫圖片描述 ret執(zhí)行popl %eip,也就是說esp向上移動指向5的標(biāo)號的位置,同時eip指向15行指令的位置(call的下一條指令) 這里寫圖片描述 回到f中執(zhí)行

leaveret

leave執(zhí)行兩條指令, movl %ebp,%esp popl %ebp 首先,將esp指向ebp相同的位置(也就是標(biāo)號4的位置),popl %ebp,將ebp出棧,此時ebp指回標(biāo)號1的位置,由于popl,esp向上移動 這里寫圖片描述

這里寫圖片描述 ret執(zhí)行popl %eip 由于popl,esp向上增加一個,指向標(biāo)號2,eip指向第23行代碼處 這里寫圖片描述 eip執(zhí)行第23行代碼,回到main處,執(zhí)行

addl $1,%eaxleaveret

eax此時的值為65,執(zhí)行addl,65+1 = 66,將66存回到eax。 函數(shù)返回值默認(rèn)使用eax來存儲 執(zhí)行l(wèi)eave,分為兩步, movl %ebp,%esp,將esp指向ebp的位置,popl %ebp,將ebp出棧(ebp指向0的位置),popl指令時esp向上移動,也就是說esp,ebp均指向標(biāo)號0的位置,?;氐絤ain函數(shù)最初的狀態(tài)。 ret,return的是main函數(shù)之前的堆棧,此處由操作系統(tǒng)管理。 這里寫圖片描述 棧向下生長,向上還原,增增減減,將程序變?yōu)橹噶盍?,從CPU上流過。 此時,小程序執(zhí)行完成 三、實驗總結(jié)–對計算機(jī)如何工作的理解 1.計算機(jī)的基本原理是存儲程序和程序控制,預(yù)先要把指揮計算機(jī)如何進(jìn)行操作的指令序列(稱為程序)和原始數(shù)據(jù)通過輸入設(shè)備輸送到計算機(jī)內(nèi)存貯器中。每一條指令中明確規(guī)定了計算機(jī)從哪個地址取數(shù),進(jìn)行什么操作,然后送到什么地址去等步驟。 計算機(jī)在運(yùn)行時,先從內(nèi)存中取出第一條指令,通過控制器的譯碼,按指令的要求,從存儲器中取出數(shù)據(jù)進(jìn)行指定的運(yùn)算和邏輯操作等加工,然后再按地址把結(jié)果送到內(nèi)存中去。接下來,再取出第二條指令,在控制器的指揮下完成規(guī)定操作。依此進(jìn)行下去。直至遇到停止指令。簡單來說就是CPU負(fù)責(zé)處理和運(yùn)算,存儲器負(fù)責(zé)保存指令和數(shù)據(jù)。通過操作系統(tǒng)得調(diào)度和安排,不停地進(jìn)行取址、譯碼、執(zhí)行的循環(huán)。 2.匯編代碼是什么? 計算機(jī)語言的發(fā)展過程從機(jī)器語言(計算機(jī)能直接識別的二進(jìn)制0和1的組合)->匯編語言(為了減輕使用機(jī)器語言編程的痛苦,人們進(jìn)行了一種有益的改進(jìn):用一些簡潔的英文字母、符號串來替代一個特定的指令的二進(jìn)制串,依賴于硬件)->高級語言(接近于數(shù)學(xué)語言或人的自然語言,同時又不依賴于計算機(jī)硬件,編出的程序能在所有機(jī)器上通用)。 我們編寫了一個小程序,比如上面實驗中寫到的main.c文件,編譯器執(zhí)行的過程,這里寫圖片描述 可執(zhí)行的二進(jìn)制文件是計算機(jī)“認(rèn)識”的文件,可以直接執(zhí)行。 3.以上便是我對這次實驗的總結(jié),計算機(jī)很“單純”,它可以執(zhí)行很多復(fù)雜的指令,但它也是被“告訴”要執(zhí)行什么,才會去執(zhí)行什么,通過對匯編語言的分析可以方便我們理解計算機(jī)處理的過程,了解計算機(jī)如何工作等等,這也會成為我今后學(xué)習(xí)的重點。感謝為我們辛苦準(zhǔn)備課程的老師!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

成人性做爰片免费视频| 日韩一区二区不卡视频| 激情欧美一区二区三区中文字幕| 国产剧情演绎av| 91网站最新网址| 又黄又骚的视频| 无码人妻aⅴ一区二区三区玉蒲团| 91视频亚洲| 久草视频免费在线| 亚洲视频每日更新| 久久国产日韩欧美| 亚洲一区二区三区在线免费观看| 亚洲图中文字幕| 秋霞在线视频| 久久99久久99精品蜜柚传媒| 精品欧美日韩一区二区| 91美女视频| 色综合手机在线| 一区二区三区午夜视频| 日本人妻熟妇久久久久久| 亚洲精品中文字幕乱码三区不卡| 老司机精品视频一区二区| 在线欧美激情| 日本亚洲最大的色成网站www| 中文幕av一区二区三区佐山爱| 91精品国产高清久久久久久| 黑人巨大狂躁日本妞在线观看| 亚洲成人黄色av| a天堂在线观看视频| 国产人妻互换一区二区| 亚洲午夜精品久久久久久久久久久久| 99久久精品国产观看| 亚洲国产精品一区二区久久hs| 亚洲爱爱天堂| 日韩免费一区| 国产成人欧美在线观看| 国产免费无遮挡吸奶头视频| 91尤物视频在线观看| …久久精品99久久香蕉国产| 男女羞羞视频网站| 免费在线观看一区二区三区| 欧美人成在线观看ccc36| 97成人超碰免| 亚洲视频高清| 国产高清不卡一区| 日本中文在线一区| 精品中文字幕视频| 免费福利视频网站| 欧美视频一区二区三区| 精品国产91久久久久久老师| 国产三级视频在线播放线观看| av中文字幕免费| 最新天堂在线视频| 久久麻豆精品| 欧美三级乱人伦电影| 性囗交免费视频观看| 日韩精品久久久久久福利| www.久久爱.cn| 亚洲成av人影院在线观看网| 欧美午夜精品电影| 国产免费1000拍拍拍| 91玉足脚交白嫩脚丫在线播放| 国产成人精品综合在线观看| 一本色道久久综合亚洲精品不| 国产成人亚洲精品无码h在线| 国产风韵犹存在线视精品| 日韩在线观看www| 久久久久久一二三区| 亚洲男女一区二区三区| 国产麻豆综合| 欧美色图另类图片| 四虎8848精品成人免费网站| 又大又长粗又爽又黄少妇视频| 亚洲日本成人在线观看| 欧美性老头oldtight| 91亚洲视频在线观看| 国产狂喷白浆在线观看视频| 91精品综合久久久久久久久久久| 国产视频www| 婷婷免费在线视频| 一区二区精品在线观看| 国产精品丝袜久久久久久不卡| 亚洲男人天堂久| 香蕉成人av| 久久在线中文字幕| 波多野结依一区| 在线看视频你懂得| 成人在线观看你懂的| www.狠狠lu| 久久色免费在线视频| 2020国产精品| 中文在线а√在线| 久久影视一区二区| 国产又黄又爽免费视频| 国产精品自拍毛片| www.久久撸.com| 欧美一区视久久| 狠狠97人人婷婷五月| 无码熟妇人妻av在线电影| 51免费午夜啪啪| 7777奇米亚洲综合久久| 国产精品大片免费观看| 一区二区三区天堂av| 中文字幕精品一区二区三区在线| 成人黄色生活片| 尤物精品在线| 91福利视频网| 性色av一区二区三区免费| 日韩av中文字幕一区二区三区| 麻豆91小视频| 亚洲精品国产成人av在线| 国产精品毛片无遮挡高清| 欧美高清视频不卡网| 一二三四在线视频观看社区| 国产极品尤物在线| 91免费在线视频观看| 国产欧美一区二区三区精品观看| 91精品视频免费看| 激情婷婷亚洲| 国产porny蝌蚪视频| 精品一区在线| 午夜在线精品| 国产福利第一视频| 中文字幕亚洲欧美日韩2019| 无码h肉动漫在线观看| 综合欧美精品| 国产综合无码一区二区色蜜蜜| 国产精品扒开做爽爽爽的视频| 久久久久久久久伊人| 嘿嘿视频在线观看| 深夜免费福利视频| 在线免费观看a视频| 欧美精品精品一区| av影院在线播放| 欧美激情乱人伦一区| 成人av免费在线| 国产精品一二三区在线观看| 欧美极品另类videosde| 日本黄色大片视频| 亚洲午夜女主播在线直播| 日韩欧美视频免费在线观看| 亚洲熟女毛茸茸| 国产特黄大片aaaa毛片| 欧美日韩一区二区三区在线电影| 国产一级黄色| 爽爽淫人综合网网站| 激情五月激情综合| 一区二区三区在线观看欧美| 九九热免费精品视频| 欧美一区二区精品在线| 免费国产麻豆传| 亚洲欧美综合国产精品一区| 欧美日韩免费区域视频在线观看| 999在线观看免费大全电视剧| 日韩成人免费电影| 日本高清一二三区| 国产高清视频免费在线观看| 2021天堂中文幕一二区在线观| 五月天婷婷在线观看| 色婷婷激情一区二区三区| 亚洲色图视频网| 免费网站观看电影入口| 亚洲色图19p| 密臀av一区二区三区| 亚洲一区在线观看视频| 国产调教打屁股xxxx网站| 国产精品私人影院| 亚洲乱码中文字幕| 一本久久综合亚洲鲁鲁五月天| 少妇久久久久| 亚洲女优在线观看| 欧美国产综合| 黄色的视频在线免费观看| 九九九热999| 国产66精品| 7m第一福利500精品视频| 国产一区二区三区不卡视频网站| 亚洲一区二区三区高清| 色哟哟一区二区三区| 91精品久久久久久久久不口人| 欧美色视频一区二区三区在线观看| 国产欧美中文在线| 性感美女福利视频| 青椒成人免费视频| 亚洲va欧美va人人爽| 国产一区二区在线| 国产日本欧美在线观看| 国产3p露脸普通话对白| 毛片在线视频播放| 亚洲综合一区中| 国产一级片免费在线观看| 午夜视频网站在线观看| 国产性生活视频| 黄色av免费网站| www视频免费看| 国产精品毛片一区二区在线看| 久久婷婷丁香| 丰满的少妇愉情hd高清果冻传媒| 日本a级片视频| 性插视频在线观看| 激情欧美成人久久综合小说| 国产精品美女视频| 少妇久久久久久久久久| 亚洲欧美色图| jizz一区二区| 激情文学综合插| 高跟丝袜一区二区三区| 日韩精品在线视频观看| 在线免费观看av网址| 97久久精品人人做人人爽50路| 国产日韩视频在线观看| 北条麻妃av高潮尖叫在线观看| 亚洲精品国产精品乱码视色| 国产性猛交96| 加勒比色老久久爱综合网| 亚洲人成伊人成综合网久久久| 久久99国产精一区二区三区| 最新一本之道波多野结衣| 久久精品国产亚洲7777| av亚洲一区二区三区| 久久草在线视频| 97久精品国产片一区二区三区| 欧美成人四级hd版| 久久午夜夜伦鲁鲁一区二区| 久久亚洲免费| 色视频在线免费| 国产欧美va欧美不卡在线| 国产真实久久| 最新av在线免费观看| 久久久久久久久久久久网站| 欧美韩国日本不卡| 男生操女生视频网站| 色偷偷9999www| 亚洲精品国产精品乱码不99| 国产在线视频一区| 欧美精品一区二区三区很污很色的| 香港伦理在线| 草美女在线观看| 国产资源在线免费观看| 无码人妻丰满熟妇区96| 成人日批视频| 亚洲精品福利在线观看| 免费裸体视频网站| 欧美多人猛交狂配| 欧美一区二区三区公司| 97精品国产综合久久久动漫日韩| 国产成人免费观看网站| 天堂久久午夜av| 成人午夜在线免费| 国产成人高清激情视频在线观看| 亚洲人成电影网站色mp4| 国产欧美日韩另类视频免费观看| 免费在线视频一级不卡| 91在线直播| 国产欧美最新羞羞视频在线观看| 日韩高清不卡av| 午夜精品免费视频| 亚洲精品国产欧美| 免费观看在线一区二区三区| 中文字幕日本视频| 女子免费在线观看视频www| 99久久精品久久亚洲精品| 一道本在线免费视频| 精品无人区乱码1区2区3区在线| 欧美精品v国产精品v日韩精品| ts人妖交友网站| 亚洲一区 中文字幕| 精品视频在线观看一区| 神马午夜电影一区二区三区在线观看| 久久久噜噜噜久噜久久综合| 亚洲不卡免费视频| www.欧美.com| 成人三级做爰av| 男女超爽视频免费播放| 91精品国产综合久久久久| www.com国产| 亚洲免费av观看| 电影一区二区在线观看| 国产一区二区精彩视频| 国产精品久久久久久久久久白浆| 欧美三级电影在线播放| 精品人妻无码一区二区三区蜜桃一| 亚洲欧美高清在线| 成年人午夜视频| aⅴ在线免费观看| 亚洲精品美女| 亚洲欧美精品中文第三| 一区二区三区|亚洲午夜| 国产男女裸体做爰爽爽| 26uuu成人| 国产精品毛片久久久久久久久久99999999| 欧美精品第一页在线播放| 男人添女人下部视频免费| 国产视频中文字幕在线观看| gogo高清免费视频| 国产一级黄色大片| 福利成人导航| 欧美人在线视频| 99在线精品免费视频| 欧美在线观看日本一区| 欧美变态tickle挠乳网站| 欧美xxxxx在线视频| 欧美做受高潮1| 呦呦在线视频| 日韩激情在线播放| 久久在线视频免费观看| 在线影视一区二区三区| 一区二区三区四区视频在线观看| 欧美日韩国产美女| 欧美妇乱xxxxx视频| 影视亚洲一区二区三区| 少妇无套高潮一二三区| 伊人青青综合网| 影音先锋制服丝袜| 久做在线视频免费观看| 成人涩涩小片视频日本| 亚洲欧美日韩国产综合| 国产5g成人5g天天爽| 久久精品国产电影| 一本大道久久a久久精二百| 91性高湖久久久久久久久_久久99| 中文字幕亚洲乱码熟女1区2区| 色偷偷偷综合中文字幕;dd| 国产一级免费视频| 国产一区第一页| 91精品国产高清91久久久久久| 成人日韩欧美| 91激情在线|