電腦是如何工作的?

來源:互聯網
上載者:User

標籤:處理器   電腦   frame   寄存器   

申小寧 原創作品轉載請註明出處
《Linux核心分析》MOOC課程 http://mooc.study.163.com/course/USTC-1000029000 

實驗:


c代碼:


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5A/61/wKioL1T8V1CxnVmrAADs1Jxm3X0686.jpg" style="float:none;" title="B69C77B6-2AFE-4355-8DEF-1978FD66FE2D.jpg" alt="wKioL1T8V1CxnVmrAADs1Jxm3X0686.jpg" />


編譯命令:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5A/65/wKiom1T8VmOCxTscAABYXJAWEn0319.jpg" title="4367ED69-A7F6-48E6-8AC7-7EB9C03C3F09.jpg" alt="wKiom1T8VmOCxTscAABYXJAWEn0319.jpg" />


彙編代碼:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5A/61/wKioL1T8V1HBloEiAAKoslH1NIo055.jpg" style="float:none;" title="E5306AD5-5320-4629-9345-51D751AA053F.jpg" alt="wKioL1T8V1HBloEiAAKoslH1NIo055.jpg" />


基礎知識


寄存器

寄存器是中央處理器內的組成部分。寄存器是有限存貯容量的高速存貯組件,它們可用來暫存指令,資料和地址。

eip:儲存當前指令寄存器,每執行完一條指令,eip將指向下一條指令。

ebp:是"基址指標"(BASE POINTER), 它最經常被用作進階語言函數調用的"架構指標"(frame pointer). 在破解的時候,經常可以看見一個標準的函數起始程式碼:

esp:專門用作堆棧指標,被形象地稱為棧頂指標,堆棧的頂部是地址小的地區,壓入堆棧的資料越多,ESP也就越來越小。在32位平台上,ESP每次減少4位元組。

eax:是"累加器"(accumulator), 它是很多加法乘法指令的預設寄存器。


定址方式

寄存器定址  movl %eax,%ebx   把eax的值,賦給ebx

立即定址 movl $0x1234,%eax   把0x1234這個立即數,賦值給eax。

直接定址 movl 0x12345,%eax   把0x12345這個記憶體位址存放的資料賦值給eax。

間接定址 movl (%eax),%ebx    eax上存放的一個記憶體位址,這個記憶體位址存放的值,賦值給ebx。

變址定址 movl 8(%eax),%ebx    eax上存放的值,加上位移量8 後,所指向的位置存放的記憶體位址,這個記憶體位址存放的值,賦值給ebx


從main函數入手:

第一句:pushl %ebp

Pushl  %ebp(表示把eax寄存器的內容壓倒棧頂):

等價於:

subl  $4,%esp (堆棧的棧頂)   

movl  %ebp,(%esp)

 第二句:movl %esp, %ebp

使得ebp指向esp指向的位置。

第三句:subl $4, %esp

棧頂向下位移4個位元組。

第四句:movl $99, (%esp)

將一個立即99存入棧頂。

第五句:call f 即調用函數f()

call 指令可分解成 

pushl eip

movl f eip


f函數

pushl %ebp(儲存EBP位置,壓棧,esp加一)

movl %esp %ebp (esp 指向EBP)

...

movl %eax (%esp)

把esp儲存記憶體位址 指向 eax寄存器

call g執行函數g


g函數


ret  函數返回作用 返回執行gax內的指令。


總結:組合語言是電腦語言的基礎,想要深入理解linux核心或者學習一些其他語言,彙編都是基礎,小夥伴們加油了!!!









 




電腦是如何工作的?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.