已知函数func的C语言代码框架,第三章习题-ddg..doc
第三章習題-ddg.
習 題
1. 給出以下概念的解釋說明。
機器語言程序機器指令匯編語言
匯編指令匯編語言程序匯編助記符
匯編程序反匯編程序機器級程序
通用寄存器定點通用寄存器棧指針寄存器
指令指針寄存器標志寄存器條件標志(條件碼)
控制標志尋址方式立即尋址
寄存器尋址存儲器操作數(shù)實地址模式
保護模式比例變址非比例變址
比例系數(shù)(比例因子)MMX指令SSE指令集
SIMD多媒體擴展通用寄存器棧(Stack)
調(diào)用者保存寄存器被調(diào)用者保存寄存器幀指針寄存器
當前棧幀按值傳遞參數(shù)按地址傳遞參數(shù)
嵌套調(diào)用遞歸調(diào)用緩沖區(qū)溢出
緩沖區(qū)溢出攻擊棧隨機化
2. 簡單回答下列問題。
(1)一條機器指令通常由哪些字段組成?各字段的含義分別是什么?
(2)將一個高級語言源程序轉(zhuǎn)換成計算機能直接執(zhí)行的機器代碼通常需要哪幾個步驟?
(3)IA-32中的邏輯運算指令如何生成條件標志?移位指令可能會改變哪些條件標志?
(4)執(zhí)行條件轉(zhuǎn)移指令時所用到的條件標志信息從何而來?請舉例說明。
(5)無條件轉(zhuǎn)移指令和調(diào)用指令的相同點和不同點是什么?
(6)按值傳遞參數(shù)和按地址傳遞參數(shù)兩種方式有哪些不同點?
(7)為什么在遞歸深度較深時遞歸調(diào)用的時間開銷和空間開銷都會較大?
(8)為什么數(shù)據(jù)在存儲器中最好按地址對齊方式存放?
(9)造成緩沖區(qū)溢出的根本原因是什么?
3. 對于以下AT&T格式匯編指令,根據(jù)操作數(shù)的長度確定對應指令助記符中的長度后綴,并說明每個操作數(shù)的尋址方式。
(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格式代碼時都會產(chǎn)生錯誤,請說明每一行存在什么錯誤。
(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. 假設(shè)變量x和ptr的類型聲明如下:
src_typex;
dst_type *ptr;
這里,src_type和dst_type是用typedef聲明的數(shù)據(jù)類型。有以下一個C語言賦值語句:
*ptr=(dst_type) x;
若x存儲在寄存器EAX或AX或AL中,ptr存儲在寄存器EDX中,則對于表3.12中給出的src_type和dst_type的類型組合,寫出實現(xiàn)上述賦值語句的機器級代碼。要求用AT&T格式匯編指令表示機器級代碼。
表3.12 題5用表
src_typedst_type機器級表示charintintcharintunsignedshortintunsigned charunsignedcharunsignedintint
6.假設(shè)某個C語言函數(shù)func的原型聲明如下:
void func(int *xptr, int *yptr, int *zptr);
函數(shù)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)
請回答下列問題或完成下列任務(wù)。
(1)在過程體開始時三個入口參數(shù)對應實參所存放的存儲單元地址是什么?(提示:當前棧幀底部由幀指針寄存器EBP指示)
(2)根據(jù)上述機器級代碼寫出函數(shù)func的C語言代碼。
7.假設(shè)變量x和y分別存放在寄存器EAX和ECX中,請給出以下每條指令執(zhí)行后寄存器EDX中的結(jié)果。
(1)leal (%eax), %edx
(2)leal 4(%eax, %ecx), %ed
總結(jié)
以上是生活随笔為你收集整理的已知函数func的C语言代码框架,第三章习题-ddg..doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好爽 java_Intellij是进行s
- 下一篇: mino文件服务器删除文件,Spring