日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第五周学习报告

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五周学习报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

程序的機器級表示。

GCC C語言編譯器以匯編代碼的形式產生輸出,匯編代碼是機器代碼的文本表示,然后GCC調用匯編器和鏈接器,從而根據匯編代碼生成可執行的機器代碼。

一、歷史觀點

Linux使用了平坦尋址方式,使程序員將整個存儲空間看做一個大的字節數組。

二、程序編碼

將源代碼轉化成可執行代碼,C預處理器擴展源代碼。

1.機器碼代碼

兩種抽象:機器級程序的格式和行為,定義為指令集體系結構;二是機器級程序使用的存儲器地址是虛擬地址,提供的存儲器模型看上去是一個非常大的字節數組。

2.代碼示例

3.關于格式的注釋

三、數據格式

1、大多數常用數據類型都是以雙字形式存儲的。包括INT和LONG INT。

2、處理字符串數據時,通常會用到字節。

3、浮點數有三種形式:單精度值float,雙精度值double,和擴展精度。

4、大多數GCC生成的匯編代碼指令都有一個字符后綴,表明操作數的大小。

四、訪問信息

一個IA32中央處理單元CPU包含一組8個存儲32位值的寄存器。寄存器用來存儲整數數據和指針。

1.操作數指示符

各種不同的操作數的可能性被分為三種類型。第一種類型是立即數,也就是常數值。第二種類型是寄存器,它表示某個寄存器的內容,對雙字操作來說,可以是8個32位寄存器中的一個。第三類操作數是存儲器引用,它會根據計算出來的地址訪問某個存儲器地址。

2.數據傳送指令

把許多不同的指令分成了指令類,一類中的指令執行一樣的操作,只不過操作數大小不同。如 MOV中的指令將源操作數的值復制到目的操作數中。源操作數指定的值是一個立即數,存儲在寄存器中或者存儲器中。目的操作數指定一個位置,要么是一個寄存器,要么是一個存儲地址。而 PUSH指令的功能是把數據壓入到棧上,而 POPL指令是彈出數據。這些指令都只有一個操作數——壓入的數據源和彈出的數據目的。

因為棧和程序代碼以及其他形式的程序數據都是放在同樣的存儲器中,所以程序可以用標準的存儲器尋址方法訪問棧內任意位置。

3.數據傳送示例

五、算術和邏輯操作

給出的每個指令類都有對字節、字、和雙字數據進行操作的指令。這些指令被分為四組:加載有效地址、一元操作、二元操作和移位;二元操作有兩個操作數,而一元操作有一個操作數。

1.加載有效地址

加載有效地址指令LEAL實際上MOVL指令的變形。它的指令形式是從存儲器讀數據到寄存器,但是實際上它根本沒有引用存儲器。

目的操作數必須是一個寄存器。

2.一元操作和二元操作

第二組中的操作是一元操作,它只有一個操作數,既是源又是目的;第三組中操作是二元操作,其中第二個操作數既是源又是目的。

3.移位操作

最后一組是移位操作,先給出移位量,然后第二項給出的是要移位的位數。它可以進行算術和邏輯右移。移位量可以是單節編碼,還可以是一個立即數。移位操作數的目的操作數可以是一個寄存器,或者是一個存儲器位置。

4.討論

5.特殊的算術操作

六、控制

到目前為止,我們只考慮了直線代碼的行為,也就是指令一條接著一條順序的執行。機器代碼提供兩種基本的低級低制來實現有條件的行為:測試數據值,然后根據測試的結果來改變控制流或者數據流。

用JUMP指令可以改變一組機器代碼的執行順序;編譯器必須產生指令序列,這些指令序列構建在這種實現C語言控制結構的低級機制之上。

1.條件碼

除了整數寄存器,CPU還維護著一組單個位的條件碼寄存器。最常見的條件碼有CF、ZF、SF、OF;

LEAL指令不改變任何條件碼,因為它是用來進行地址計算的。

CMP指令和SUB指令的行為是一樣的。

TEST指令和AND指令的行為一樣的,除了他們只設置條件碼而改變目的寄存器的值。典型的用法,兩個操作數是一樣的,或者其中的一個操作數是一個掩碼,用來指示哪些位應該被測試。

2.條件訪問碼

條件碼通常不會直接讀取,常見的使用方法有:1.)可以根據條件碼的某個組合,將一個字節設置為0或者1;2.)可以條件跳轉到程序的某個其他的部分3.)可以有條件地傳送數據。

機器代碼對于有符號和無符號兩種情況都使用一樣的指令,這是因為許多的算術運算對無符號和補碼算術都有一樣的位級行為。

3.跳轉指令極其編碼

跳轉指令會導致執行切換到程序中一個全新的位置。

4.翻譯條件分支

將條件表達式和語句從C語言翻譯成機器代碼,最常用的方式是結合有條件和無條件跳轉。

5.循環

大多數匯編器根據一個循環的do-while形式來產生循環代碼。

6.條件傳送指令

實現條件操作的傳統方法是利用控制的條件轉移。數據的條件轉移是一種替代的策略。這種方法先計算一個條件操作的兩種結果,然后再根據條件是否滿足從而選取一個。

7.switch語句

選擇開關語句不僅僅提高C代碼的可讀性,而是通過使用跳轉表這種數據結構使得實現更加高效。

七、過程

一個過程調用包括將數據和控制從代碼的一部分傳遞到另一部分。另外,它必須在進入時為過程的局部分量分配空間,并在退出時釋放這些空間。數據傳遞和、局部變量的分配和釋放通過操縱程序棧來實現。

1.棧幀結構

IA32程序用程序棧來支持過程調用。機器用棧來傳遞過程參數、存儲返回信息、保存寄存器用于以后恢復,以及本地存儲。為單個過程分配的那部分棧為棧幀,棧幀的最頂端以兩個指針界定,寄存器%ebp為幀指針,而寄存器%esp為棧指針。當程序執行時,棧指針可以移動,因此大多數信息的訪問都是相對于幀指針的。(棧用來傳遞參數,存儲返回信息,保存寄存器,以及本地存儲)

2.轉移控制

CALL指令有一個目標,即指明被調用過程起始的指令地址。CALL指令的效果是將返回地址入棧,并跳轉到被調用過程的起始處。RET指令從棧中彈出地址,并跳轉到這個位置。

3.寄存器使用慣例

寄存器%eax,%edx和%ecx被劃分為調用者保存寄存器。當過程P調用Q時,Q可以覆蓋這些寄存器,而不會破壞任何P所需要的數據。另一方面,寄存器%ebx,%esi和%dei被劃分為被調用者保存寄存器。根據描述的慣例,必須保持寄存器%ebp和%esp。

4.過程示例

編譯器根據一組很簡單的慣例來產生慣例棧結構的代碼。參數在棧上傳遞給函數,可以從棧中用相對于%ebp的正偏移量,來訪問他們。可以用push指令或者是從棧指針減去偏移量來在棧上分配空間,在返回前,函數必須將?;謴偷皆紬l件,可以恢復所有的被調用者保存寄存器和%ebp,并且重置%esp使其指向返回地址。為了使程序能夠正確執行,讓所有過程都遵循一組建立和恢復棧的一致慣例很重要。

5.遞歸過程

八、數組分配和訪問

1.基本原則

2.指針運算

如果P是一個指向類型為T的數據的指針,P為值xp,那么表達式p+i的值為xp+L,這里L是指數據類型T的大小。

3.嵌套的數組

4.定長數組

5.變長數組

九、異質的數據結構

1.結構

2.聯合

3.數據對齊

十、綜合理解指針

十一、使用GDB調試器

通常的方法是在程序感興趣的地方附近設置斷點。斷點可以設置在函數入口后面,或者一個程序的地址處。在斷點處,可以單步追蹤程序,一次只執行幾條指令,或是前進到下一斷點。一些命令,如 kill-停止程序,break sum-在函數sum入口設置斷點。disas-反匯編當前函數。等。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

??

?

?

? ??

??

?

轉載于:https://www.cnblogs.com/java44/p/4869232.html

總結

以上是生活随笔為你收集整理的第五周学习报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线小视频 | 黄色工厂在线观看 | 国产午夜伦理 | 国产精品三区四区 | 女人18毛片毛片毛片毛片区二 | 国产淫片av片久久久久久 | 欧美精品大片 | 男男肉耽高h彩漫 | 芒果视频污污 | 天堂网在线最新版www中文网 | 高潮一区 | 欧美一级片播放 | 日韩精品区 | 日韩成人欧美 | 四虎影视精品 | 欧美人体做爰大胆视频 | 在线观看无码精品 | 在线观看无码精品 | www日韩av | 韩国三级免费 | 午夜91视频 | 女主播在线观看 | 美女被草视频在线观看 | 国产女优在线播放 | 伊人ab| 午夜精品视频 | 黄色av网站在线播放 | www.亚洲激情 | 咪咪成人网 | 麻豆视频网站在线观看 | 成人播放器 | 91亚洲一线产区二线产区 | 国产精品一区二区入口九绯色 | 依依成人av | 夜夜嗨老熟女av一区二区三区 | 欧美激情一区二区三区在线 | 秘密爱大尺度做爰呻吟 | 91色视频| 蜜桃av在线播放 | 玉丸(双性调教) | 日韩激情视频在线 | 国模私拍大尺度裸体av | 男人看片网站 | 欧美日韩精品一区二区在线观看 | 国产无遮挡裸体免费视频 | 欧美爱爱网站 | 国产成人无码a区在线观看视频 | 久久www视频 | 精品香蕉99久久久久网站 | 亚洲人在线播放 | 亚洲国产精品国自产拍av | 久久免费看毛片 | 国产三级播放 | 中文字幕国产在线观看 | 污导航在线| va婷婷在线免费观看 | 久久一级片 | 97伊人久久| 天天久| 精品人妻一区二区三区日产乱码 | 久久午夜夜伦鲁鲁片无码免费 | 午夜婷婷在线观看 | 亚洲二区中文字幕 | 奇米精品一区二区三区在线观看一 | 国产8区 | 变态另类丨国产精品 | 日韩一页 | 天天干天天操 | 娇妻被肉到高潮流白浆 | 午夜天堂网 | 欧美日韩在线一区二区三区 | 午夜在线一区二区 | 亚洲精品成人电影 | 国产xxx在线 | 又黄又色又爽的视频 | 久久人人爽爽 | 亚洲精品视频在线观看免费视频 | 自拍偷拍欧美亚洲 | 亚洲一区二区三区在线视频观看 | 激情在线网站 | 99久久久无码国产精品免费蜜柚 | 幸福宝在线观看 | 少妇久久久久久久久久 | 男人激烈吮乳吃奶爽文 | 欧美人妻精品一区二区 | 久久久久久久久久久久久久久久久 | 夜夜操操操 | 日本欧美一本 | 欧美涩涩视频 | 成年人免费观看网站 | av在线手机版 | 亚洲视频不卡 | 日韩网站在线 | 在线91av | 美国av片 | 9色视频 | 在线不卡av电影 | 中文字幕在线观看91 | 91黄色大片|