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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

已知函数func的C语言代码框架,第三章习题-ddg..doc

發布時間:2024/9/27 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 已知函数func的C语言代码框架,第三章习题-ddg..doc 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第三章習題-ddg.

習 題

1. 給出以下概念的解釋說明。

機器語言程序機器指令匯編語言

匯編指令匯編語言程序匯編助記符

匯編程序反匯編程序機器級程序

通用寄存器定點通用寄存器棧指針寄存器

指令指針寄存器標志寄存器條件標志(條件碼)

控制標志尋址方式立即尋址

寄存器尋址存儲器操作數實地址模式

保護模式比例變址非比例變址

比例系數(比例因子)MMX指令SSE指令集

SIMD多媒體擴展通用寄存器棧(Stack)

調用者保存寄存器被調用者保存寄存器幀指針寄存器

當前棧幀按值傳遞參數按地址傳遞參數

嵌套調用遞歸調用緩沖區溢出

緩沖區溢出攻擊棧隨機化

2. 簡單回答下列問題。

(1)一條機器指令通常由哪些字段組成?各字段的含義分別是什么?

(2)將一個高級語言源程序轉換成計算機能直接執行的機器代碼通常需要哪幾個步驟?

(3)IA-32中的邏輯運算指令如何生成條件標志?移位指令可能會改變哪些條件標志?

(4)執行條件轉移指令時所用到的條件標志信息從何而來?請舉例說明。

(5)無條件轉移指令和調用指令的相同點和不同點是什么?

(6)按值傳遞參數和按地址傳遞參數兩種方式有哪些不同點?

(7)為什么在遞歸深度較深時遞歸調用的時間開銷和空間開銷都會較大?

(8)為什么數據在存儲器中最好按地址對齊方式存放?

(9)造成緩沖區溢出的根本原因是什么?

3. 對于以下AT&T格式匯編指令,根據操作數的長度確定對應指令助記符中的長度后綴,并說明每個操作數的尋址方式。

(1)mov 8(%ebp, %ebx, 4), %ax

(2)mov %al, 12(%ebp)

(3)add ( , %ebx,4), %ebx

(4)or (%ebx), %dh

(5)push $0xF8

(6)mov $0xFFF0, %eax

(7)test %cx, %cx

(8)lea 8(%ebx, %esi), %eax

4. 使用匯編器處理以下各行AT&T格式代碼時都會產生錯誤,請說明每一行存在什么錯誤。

(1)movl 0xFF, (%eax)

(2)movb %ax, 12(%ebp)

(3)addl %ecx, $0xF0

(4)orw $0xFFFF0, (%ebx)

(5)addb $0xF8, (%dl)

(6)movl %bx, %eax

(7)andl %esi, %esx

(8)movw 8(%ebp, , 4), %ax

5. 假設變量x和ptr的類型聲明如下:

src_typex;

dst_type *ptr;

這里,src_type和dst_type是用typedef聲明的數據類型。有以下一個C語言賦值語句:

*ptr=(dst_type) x;

若x存儲在寄存器EAX或AX或AL中,ptr存儲在寄存器EDX中,則對于表3.12中給出的src_type和dst_type的類型組合,寫出實現上述賦值語句的機器級代碼。要求用AT&T格式匯編指令表示機器級代碼。

表3.12 題5用表

src_typedst_type機器級表示charintintcharintunsignedshortintunsigned charunsignedcharunsignedintint

6.假設某個C語言函數func的原型聲明如下:

void func(int *xptr, int *yptr, int *zptr);

函數func的過程體對應的機器級代碼用AT&T匯編形式表示如下:

1movl8(%ebp), %eax

2movl12(%ebp), %ebx

3movl 16(%ebp), %ecx

4movl(%ebx), %edx

5movl(%ecx), %esi

6movl (%eax), %edi

7movl%edi, (%ebx)

8movl%edx, (%ecx)

9movl %esi, (%eax)

請回答下列問題或完成下列任務。

(1)在過程體開始時三個入口參數對應實參所存放的存儲單元地址是什么?(提示:當前棧幀底部由幀指針寄存器EBP指示)

(2)根據上述機器級代碼寫出函數func的C語言代碼。

7.假設變量x和y分別存放在寄存器EAX和ECX中,請給出以下每條指令執行后寄存器EDX中的結果。

(1)leal (%eax), %edx

(2)leal 4(%eax, %ecx), %ed

總結

以上是生活随笔為你收集整理的已知函数func的C语言代码框架,第三章习题-ddg..doc的全部內容,希望文章能夠幫你解決所遇到的問題。

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