過程調(diào)用討論題PPT課件_第1頁
過程調(diào)用討論題PPT課件_第2頁
過程調(diào)用討論題PPT課件_第3頁
過程調(diào)用討論題PPT課件_第4頁
過程調(diào)用討論題PPT課件_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1,有關(guān)“過程調(diào)用”的練習(xí),假設(shè)P為調(diào)用過程,Q為被調(diào)用過程,程序在IA-32處理器上執(zhí)行,以下有關(guān)過程調(diào)用的敘述中,錯誤的是( )。 A. C語言程序中的函數(shù)調(diào)用就是過程調(diào)用 B. 從P傳到Q的實參無需重新分配空間存放 C. 從P跳轉(zhuǎn)到Q執(zhí)行應(yīng)使用CALL指令 D. 從Q跳回到Q執(zhí)行應(yīng)使用RET指令,2,有關(guān)“過程調(diào)用”的練習(xí),假設(shè)P為調(diào)用過程,Q為被調(diào)用過程,程序在IA-32處理器上執(zhí)行,以下是C語言程序中過程調(diào)用所涉及的操作: 過程Q保存P的現(xiàn)場,并為非靜態(tài)局部變量分配空間 過程P將實參存放到Q能訪問到的地方 過程P將返回地址存放到特定處,并跳轉(zhuǎn)到Q執(zhí)行 過程Q取出返回地址,并跳轉(zhuǎn)回到過

2、程P執(zhí)行 過程Q恢復(fù)P的現(xiàn)場,并釋放局部變量所占空間 執(zhí)行過程Q的函數(shù)體 過程調(diào)用的正確執(zhí)行步驟是( )。 A. B. C. D.,3,以下是有關(guān)IA-32的過程調(diào)用的敘述,錯誤的是( )。 A. 在過程中通常先使用被調(diào)用者保存寄存器 B. 每個非葉子過程都有一個棧幀,其大小為16B的倍數(shù) C. EBP寄存器中的內(nèi)容指向?qū)?yīng)棧幀(stack frame)的底部 D. 每個棧幀底部單元中存放其調(diào)用過程的EBP內(nèi)容 以下是有關(guān)IA-32的過程調(diào)用所使用的棧和棧幀的敘述,錯誤的是( )。 A. 每進行一次過程調(diào)用,用戶棧從高地址向低地址增長出一個棧幀 B. 從被調(diào)用過程返回調(diào)用過程之前,被調(diào)用過程會

3、釋放自己的棧幀 C. 只能通過將棧指針ESP作為基址寄存器來訪問用戶棧中的數(shù)據(jù) D. 過程嵌套調(diào)用深度越深,棧中棧幀個數(shù)越多,嚴重時會發(fā)生棧溢出,有關(guān)“過程調(diào)用”的練習(xí),4,有關(guān)“過程調(diào)用”的練習(xí),以下是有關(guān)C程序的變量作用域和生存期的敘述,錯誤的是( )。 A. 靜態(tài)(static型)變量和非靜態(tài)局部變量都分配在對應(yīng)棧幀中 B. 因為非靜態(tài)局部變量被分配在棧中,所以其作用域僅在過程體內(nèi) C. 非靜態(tài)局部變量可以與全局變量同名,因為它們被分配在不同存儲區(qū) D. 不同函數(shù)中非靜態(tài)局部變量可以同名,因為它們被分配在不同棧幀中,以下有關(guān)遞歸過程調(diào)用的敘述中,錯誤的是( )。 A. 每次遞歸調(diào)用都會額

4、外執(zhí)行多條指令,因而時間開銷大 B. 每次遞歸調(diào)用都會生成一個新的棧幀,因而空間開銷大 C. 每次遞歸調(diào)用在棧幀中保存的返回地址都不相同 D. 遞歸過程第一個參數(shù)的有效地址為Rebp+8,5,有關(guān)“過程調(diào)用”的練習(xí),以下是一個C語言程序代碼: int add(int x, int y) return x+y; int caller( ) int t1=100 ; int t2=200; int sum=add(t1, t2); return sum; 以下關(guān)于上述程序代碼在 IA-32上執(zhí)行的敘述中,錯誤的是( )。 A. 變量t1、t2和sum被分配在caller函數(shù)的棧幀中 B. 傳遞參數(shù)

5、時t2和t1的值從高地址到低地址依次存入棧中 C. 入口參數(shù)t1和t2的值被分配在add函數(shù)的棧幀中 D. add函數(shù)返回時返回值存放在EAX寄存器中,6,有關(guān)“過程調(diào)用”的討論,為什么以下程序輸出結(jié)果是x=-1217400844而不是x=100?在你的機器上執(zhí)行結(jié)果是什么?每次執(zhí)行結(jié)果都一樣嗎?反匯編后的機器級代碼如何支持你的分析? int x=100; void main ( ) int x; printf(“x=%dn”, x);,稍作修改后輸出結(jié)果是什么,7,以下是網(wǎng)上的一個帖子,請將程序的可執(zhí)行文件反匯編(基于IA-32),并對匯編代碼進行分析以正確回答該貼中的問題。 該貼給出的結(jié)果是在Linux還是Windows上得到的?為什么,有關(guān)“過程調(diào)用”的討論,8,有關(guān)“過程調(diào)用”的討論,以下是一段C語言代碼: #include main() double a = 10; printf(a = %dn, a); 在你的機器上執(zhí)行結(jié)果是什么? 請根據(jù)匯編指令解釋你的結(jié)果,當(dāng)a說明成float類型又怎樣呢,百度招聘題,如果改成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論