freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux內(nèi)核源代碼導(dǎo)讀(更新版)

2025-08-25 15:30上一頁面

下一頁面
  

【正文】 轉(zhuǎn) /分支:執(zhí)行這樣的指令的時(shí)候, cs : eip的值會根據(jù)程序需要被修改 ?call:將當(dāng)前 cs : eip的值壓入棧頂, cs : eip指向被調(diào)用函數(shù)的入口地址 ?ret:從棧頂彈出原來保存在這里的 cs : eip的值,放入 cs : eip中 ?發(fā)生中斷時(shí)??? ????? I386系統(tǒng)的基本概念 ?代碼的運(yùn)行 ?堆棧的概念 ?內(nèi)核態(tài)與用戶態(tài) ?中斷 /異常 /系統(tǒng)調(diào)用 ?虛擬內(nèi)存 堆棧的概念 ?堆棧是 C語言程序運(yùn)行時(shí)必須的一個(gè)記錄調(diào)用路徑和參數(shù)的空間 ? 函數(shù)調(diào)用框架 ? 傳遞參數(shù) ? 保存返回地址 ? 提供局部變量空間 ? 等等 ? C語言編譯器對堆棧的使用有一套的規(guī)則 ?了解堆棧存在的目的和編譯器對堆棧使用的規(guī)則是理解操作系統(tǒng)一些關(guān)鍵性代碼的基礎(chǔ) ?以 x86體系結(jié)構(gòu)為例 堆棧寄存器和堆棧操作 ?堆棧相關(guān)的寄存器 ?esp,堆棧指針( stack pointer) ?ebp,基址指針( base pointer) ?堆棧操作 ?push 棧頂?shù)刂窚p少 4個(gè)字節(jié)( 32位) ?pop 棧頂?shù)刂吩黾?4個(gè)字節(jié) ?ebp在 C語言中用作記錄當(dāng)前函數(shù)調(diào)用基址 esp ebp 高地址 低地址 esp // 調(diào)用者 … call target … 利用堆棧實(shí)現(xiàn)函數(shù)調(diào)用和返回 //建立被調(diào)用者函數(shù)的堆??蚣? pushl %ebp movl %esp, %ebp //拆除被調(diào)用者函數(shù)的堆??蚣? movl %ebp,%esp popl %ebp ret //被調(diào)用者函數(shù)體 //do sth. … call指令: 1)將 下一條指令的地址 A保存在棧頂 2)設(shè)置 eip指向被調(diào)用程序代碼開始處 將地址 A恢復(fù)到 eip中 函數(shù)堆??蚣艿男纬? ? call xxx ? 執(zhí)行 call之前 ? 執(zhí)行 call時(shí), cs : eip原來的值 指向 call下一條指令,該值被 保存到棧頂,然后 cs : eip的值 指向 xxx的入口地址 ?進(jìn)入 xxx ? 第一條指令: pushl %ebp ? 第二條指令: movl %esp, %ebp ? 函數(shù)體中的常規(guī)操作,可能會壓棧、出棧 ?退出 xxx ? movl %ebp,%esp ? popl %ebp ? ret esp ebp 高地址 低地址 cs : eip esp ebp esp ebp esp ?C語言中還使用堆棧進(jìn)行 ?參數(shù)的傳遞 ?局部變量的使用 一段小程序 源文件: 這是一個(gè)很簡單的 C程序 main函數(shù)中調(diào)用了函數(shù) p1和p2 首先使用 gcc生成 文件 test 然后使用 objdump –S獲得 test的反匯編文件 eip eip eip eip 觀察程序運(yùn)行時(shí)堆棧的變化 main … p1(c) … p2(x,y) … p1 p2 main p2 p1 程序的代碼段 堆棧 eip esp main堆棧 c eip eip p1的堆棧 esp eip eip x, y p2堆棧 另一段小程序 和前一段小程序稍有不同 在這個(gè)小程序中, main函數(shù)中調(diào)用了函數(shù) p2,而在 p2的執(zhí)行過程中又調(diào)用了函數(shù) p1 觀察程序運(yùn)行時(shí)堆棧的變化 eip eip eip eip main … p2(x,y) … p1 p2 … p1(c) … main p2 p1 程序的代碼段 堆棧 eip esp main堆棧 esp eip eip x, y eip p2堆棧 eip eip c eip p1堆棧 esp I386系統(tǒng)的基本概念 ?代碼的運(yùn)行 ?堆棧的概念 ?內(nèi)核態(tài)與用戶態(tài) ?中斷 /異常 /系統(tǒng)調(diào)用 ?虛擬內(nèi)存 用戶態(tài)和內(nèi)核態(tài)的概念 ?Why? ?假定不區(qū)分 ?用戶直接修改操作系統(tǒng)的數(shù)據(jù) ?用戶直接調(diào)用操作系統(tǒng)的內(nèi)部函數(shù) ?用戶直接操作外設(shè) ?用戶任意讀 /寫物理內(nèi)存 ?因此,要區(qū)分用戶態(tài)和內(nèi)核態(tài): ?禁止用戶程序和底層硬件直接打交道 (最簡單的例子,如果用戶程序往硬件控制寄存器寫入不恰當(dāng)?shù)闹?,可能?dǎo)致硬件無法正常工作 ) ?禁止用戶程序訪問任意的物理內(nèi)存 (否則可能會破壞其他程序的正常執(zhí)行,如果對核心內(nèi)核所在的地址空間寫入數(shù)據(jù)的話,會導(dǎo)致系統(tǒng)崩潰) ?什么是用戶態(tài)和內(nèi)核態(tài)? ?一般現(xiàn)代 CPU都有幾種不同的指令執(zhí)行級別 ?在高執(zhí)行級別下,代碼可以執(zhí)行 特權(quán)指令 ,訪問 任意的物理地址 ,這種 CPU執(zhí)行級別就對應(yīng)著內(nèi)核態(tài) ?而在相應(yīng)的低級別執(zhí)行狀態(tài)下,代碼的掌控范圍會受到限制。 ?GNU,“ gnoo”,“ GNU3
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1