Linux內(nèi)核分析——第一周:計(jì)算機(jī)是如何工作的?

之前學(xué)習(xí)了操作系統(tǒng)課程,對(duì)其中寄存器等匯編部分一直感到很陌生,今天點(diǎn)開了孟寧老師的Linux內(nèi)核分析,看了第一周的計(jì)算機(jī)是如何工作的,受益匪淺。

首先將一段簡(jiǎn)單的C代碼轉(zhuǎn)換成匯編代碼

vim a.c

Paste_Image.png

執(zhí)行以下命令,其中m32表示使用32位
gcc –S –o a.s a.c -m32
打開 a.s 刪除其中點(diǎn)開頭的行得到以下結(jié)果就是匯編代碼

Paste_Image.png

了解常見的寄存器、匯編指令

  1. 寄存器
    esp 記錄棧底位置
    ebp 記錄棧頂位置
    eax 記錄函數(shù)返回
    eip 記錄函數(shù)位置

  2. 匯編指令
    movl 賦值
    addl 加法運(yùn)算
    subl 減法運(yùn)算
    pushl 壓棧
    popl 彈棧
    call 函數(shù)調(diào)用
    ret 函數(shù)返回
    leave 使esp、ebp回到上次的位置

分析匯編代碼理解程序運(yùn)行過程

Paste_Image.png

總結(jié)

馮諾依曼提出的存儲(chǔ)程序的計(jì)算機(jī)工作模型,是計(jì)算機(jī)最最基礎(chǔ)性的邏輯結(jié)構(gòu),他的魅力在于能讓計(jì)算機(jī)按部就班的做運(yùn)算,最終返回運(yùn)算結(jié)果,這也正是計(jì)算機(jī)的強(qiáng)項(xiàng)。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容