版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机系统基础(四):编程与调试实践_南京大学中国大学mooc课后章节答案期末考试题库2023年若函数sum()的某次调用对应的C语句为“x=sum(a,n);”,其对应的机器级指令如下:pushl-0x20(%ebp)lea-0x18(%ebp),%eaxpush%eaxcall8048466add$0x8,%espmov%eax,-0x1c(%ebp)在sum()的函数说明中,对应参数a的变量定义可以是()
参考答案:
int*a;_inta[];
设R[eax]=0000B160H,R[ebx]=00FF0110H,执行指令“imulw%bx”后寄存器内容变化为()
参考答案:
R[eax]=00007600H,R[dx]=FFACH
实验阶段3中,用于基于输入数字进行控制分支跳转(对应C语言的switch语句)的跳转表的起始内存地址是什么?(地址形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的英文字符全部采取小写形式,例如0x080489ab)
参考答案:
0x0804a1c4
实验阶段3的拆解字符串是什么?(注意必须准确输入拆解字符串,不能多输、少输、错输且大小写必须一致——详见实验说明文档)
参考答案:
7924##%_YZPRLFH_%##8924##%_YZPRLFH_%##9973##%_YZPRLFH_%##10924##%_YZPRLFH_%##11973##%_YZPRLFH_%##12924##%_YZPRLFH_%##13973##%_YZPRLFH_%##14973##%_YZPRLFH_%##15924##%_YZPRLFH_%##16973
实验阶段1中,用于初始化程序内置浮点数的整数值是多少?(整数值表示形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的英文字符全部采取小写形式,例如0x1234abcd)
参考答案:
0x1a4eccf6
对于一个n(n≥8)位的变量x,根据C语言中按位运算的定义,表达式((x^~0xFF)>>8)<<8的功能是()
参考答案:
x的最低有效字节全变为0,其余各位取反
实验阶段1中,当程序执行调用sscanf函数的call指令之后(且在开始执行sscanf函数的第一条指令之前),phase_1过程的栈帧的大小是多少?(从栈帧中保存的EBP寄存器旧值开始算起——详见前导理论课程中相关内容。栈帧大小的整数值表示形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的英文字符全部采取小写形式,例如0x0000001a)
参考答案:
0x00000040
实验阶段1的拆解字符串是什么?(注意必须准确输入拆解字符串,不能多输、少输、错输且大小写必须一致——详见实验说明文档)
参考答案:
-1677721601102728908
实验阶段2中,从拆解字符串中读入的数字序列在栈帧中的存储首地址相对于栈帧基址(即寄存器EBP的值)的偏移量是多少?(请使用32位补码表示该偏移量,具体形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的英文字符全部采取小写形式,例如0xffffffab)
参考答案:
0xffffffd4
实验阶段2的拆解字符串是什么?(注意必须准确输入拆解字符串,不能多输、少输、错输且大小写必须一致——详见实验说明文档)
参考答案:
13813713412912211310289
以下关于IA-32/Linux信号机制的叙述中,错误的是()
参考答案:
Linux总是采用向发生异常的进程发送信号的机制实现异常处理
以下关于IA-32/Linux异常处理和中断处理的叙述中,错误的是()
参考答案:
Linux中异常处理的C函数名由do_前缀和处理程序名组成,与相应信号处理程序名相同
在主存和CPU之间增加cache的目的是()
参考答案:
加快信息访问速度
在存储器分层体系结构中,存储器从容量最大到最小的排列顺序是()
参考答案:
辅存-主存-cache-寄存器
以下哪一种情况能很好地发挥cache的作用?——()
参考答案:
程序具有较好的访问局部性
若f为某IEEE754单精度浮点数的机器表示,f的真值为a,则以下代码实现的功能是()unsignedintfloat_neg(unsignedintf){unsignedexp=f>>23&0xFF;unsignedfrac=f&0x7FFFFF;if(exp==0xFF)&&(frac!=0)returnf;elsereturnf^0x80000000;}
参考答案:
令f的真值为-a
假定一个C源程序文件test.c的内容如下:#includeintmain(){printf("Hello,world!")return0;}现运行命令”gcc-otesttest.c2>output.txt“,则文件output.txt中的内容是()
参考答案:
gcc编译过程中的输出
下列选项中,不能作为gdb调试工具的break命令的断点目标的是()
参考答案:
C源程序文件中的变量名
一个C源程序文件p1.c的内容如下:externints;intfoo(intn){returnn*s;}另一C源程序文件p2.c的内容如下:intfoo(int);intmain(){returnfoo(-1);}执行命令”gcc-otestp1.cp2.c“后将产生下列哪个结果?()
参考答案:
输出错误信息
C语言程序P如下所示:#include"stdio.h"floatsum(floata[],intn){inti;floatsum=0;for(i=0;i
参考答案:
数据之和大于2147483647_输入数据中存在阶差大于等于25的两个数_数据之和存在小数部分_输入数据不能用float型精确表示
一条机器指令通常由多个字段构成。下列选项中不显式包含在机器指令中的是()
参考答案:
下条指令地址
某C语言程序中将数组变量b声明为“intb[10][5];”有一条for语句如下:for(i=0;i<10,i++)for(j=0;j<5;j++)sum+=b[i][j];假设执行到“sum+=b[i][j];”时,sum的值在EAX中,b[i][0]所在的地址在EDX中,j在ESI中,则“sum+=b[i][j];”所对应的指令(AT&T格式)可以是()
参考答案:
addl0(%edx,%esi,4),%eax
设R[ax]=FFE8H,R[bx]=7FE6H,执行指令“subw%bx,%ax”后寄存器内容和各标志变化为()
参考答案:
R[ax]=8002H,OF=0,SF=1,CF=0,ZF=0
假定局部数组a的声明为inta[4]={0,-1,300,20},a的首地址为R[ebp]-16,则将a的首地址取到EDX的汇编指令是()
参考答案:
leal
-16(%ebp),%edx
C语言程序P如下:#include"stdio.h"voidmain(){intx,y,z;scanf("%d%d",&x,&y);z=x+y;printf("z=%d\n",z);}在IA-32+Linux+gcc环境中用gdb工具调试执行该程序,当前的断点在“printf("z=%d\n",z);”语句处(该C语句尚未执行),在可执行目标文件的反汇编代码中查找到变量x和y的地址分别是-0x18(%ebp)和-0x14(%ebp)。当前的调试信息如下:(gdb)irebpebp0xffffd2b8(gdb)x/8xb0xffffd2a00xffffd2a0:0xec0xff0xff0xff0x030x000x000x00则输入的x和y分别是()
参考答案:
-20、3
给定一个int类型变量a和一个double类型变量b,则表达式”a-b“的值恒等于下列哪个表达式的值?()
参考答案:
(double)a-b
考虑以下C语言代码:unsignedintui=0x80808080;shorts=ui;执行上述程序段后,s的十进制数值是()
参考答案:
-32640
8位补码定点整数10010101左移一位后的值为()
参考答案:
溢出
执行如下C程序段后,变量c的值为()inta=90;intb=80;floatc=a/b;
参考答案:
1
某8位计算机中,假定带符号整数变量x和y的机器数表示为:[x]补=F5H,[y]补=7EH,则x–y的值及其相应的溢出标志OF分别是()
参考答案:
119、1
某计算机字长8位,有一个8位加法器。已知带符号整数x=-69,y=-38,在该加法器中完成x–y的运算,则该加法器的两个输入端信息和输入的低位进位信息分别为()
参考答案:
10111011、00100101、1
8位补码定点整数10010101右移一位后的值为()
参考答案:
11001010
在gcc命令行上单独使用下列哪个选项,可将一个C源程序文件转换为对应的汇编源程序文件?()
参考答案:
-S
以下有关程序编写和执行方面的叙述中,错误的是()
参考答案:
汇编语言是一种与机器结构无关的编程语言
计算机系统采用层次化结构,从最上面的应用层到最下面的硬件层,其层次化构成为()
参考答案:
高级语言虚拟机-汇编语言虚拟机-操作系统虚拟机-机器语言机器
使用gdb工具跟踪一个从C源文件编译生成并包含调试信息的可执行程序时,s命令的功能是()
参考答案:
执行一条C语句;如是过程调用语句,则停止在目标过程中的第一条C语句
下列选项中,不属于objdump程序的功能的是()
参考答案:
跟踪、调试二进制程序的运行
下列任务的执行中不需要root管理员权限的是()
参考答案:
使用gcc工具从C源文件编译系统软件程序
程序模块phase3.o的.text节中,对do_phase过程中switch语句所对应的跳转表的引用位于自什么偏移量开始的4个字节?(偏移量应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x0000001a)
参考答案:
0x00000075
在安装Linux系统时,必须创建的供Linux系统使用的磁盘分区是()
参考答案:
根分区
编译优化和性能调优的关系,以下说法正确的是
参考答案:
性能调优时需充分考虑编译器已进行的优化
性能优化的基本原则是
参考答案:
不要过早做不成熟的优化
考虑在x86/Linux平台上的应用程序解引用一个int32_t*,其地址不是4的倍数,这是一个不对齐的内存访问。以下说法正确的是
参考答案:
可能会引发性能问题
考虑在x86/Linux平台上的应用程序,以下指令执行时可能陷入操作系统内核执行的有
参考答案:
movl$1,(%eax)
movzbl(%esi,%ecx,1),%eax指令的行为是
参考答案:
将地址是%esi+%ecx的内存零扩展后赋值给%eax寄存器
glibc中的memcpy在复制大内存时的速度显著快于手工实现的若干版本,是因为
参考答案:
使用了CPU提供的SIMD指令
strace/ltrace实现打印调用时间的命令行选项是
参考答案:
-T
strace/ltrace实现子进程的递归追踪的命令行选项是
参考答案:
-f
若想了解程序中哪些指令耗费了较多的时间,最合适的工具是
参考答案:
perf
使用perf工具的哪个命令可以即时查看整个系统中各个程序的综合profiling统计
参考答案:
perftop
在IA-32+Linux+gcc环境,编译下述C语言代码段的乘法运算时,适合的指令是()intx=3,y=4,z;z=x*y;
参考答案:
无符号整数乘法指令_带符号整数乘法指令
函数sum()的反汇编代码如下:intsum(inta[],intn){inti,sum=0;8048406:55push%ebp8048407:89e5mov%esp,%ebp8048409:83ec10sub$0x10,%esp804840c:c745fc00000000movl$0x0,-0x4(%ebp)for(i=0;isum+=a[i];804841c:8b45f8mov-0x8(%ebp),%eax804841f:8d148500000000lea0x0(,%eax,4),%edx8048426:8b4508mov0x8(%ebp),%eax8048429:01d0add%edx,%eax804842b:8b00mov(%eax),%eax804842d:0145fcadd%eax,-0x4(%ebp)for(i=0;ireturnsum;804843c:8b45fcmov-0x4(%ebp),%eax}804843f:c9leave8048440:c3ret执行函数sum()过程中,需要执行的指令条数至少是()
参考答案:
12
若过程A调用过程B,B是一个递归函数。若已经第3次递归调用B(即已经执行过3次“callB”指令),在IA-32+Linux+gcc的环境中,当前的调试信息如下:(gdb)irespebpesp0xffffd28cebp0xffffd28c(gdb)x/1xw$esp0xffffd28c:0xffffd2a8则此时第2次递归调用B时的栈空间开销为()
参考答案:
28字节
过程A调用过程B,过程B进一步调用过程C。过程B在其栈帧中定义了一个非静态数组用作缓冲区,并将该数组的首地址作为参数传递给过程C。假设过程C按数组成员的存储顺序,向该数组循环写入数据并最终发生了地址溢出——即写入操作所访问的内存地址超出了数组的存储地址范围,则该写入操作在触发内存访问异常前,不可能破坏下列哪项?()
参考答案:
B为调用C而准备的实参
假定静态short型二维数组b和指针数组pb的声明如下:staticshortb[2][4]={{2,9,-1,5},{3,1,-6,2}};staticshort*pb[2]={b[0],b[1]};若b和pb的首地址分别为0x8049820、0x8049830,i在ECX中,则“*pb[i]送EAX”所对应的汇编指令序列是()
参考答案:
movl0x8049830(,%ecx,4),%edxmovl(%edx),%eax
为输出慕课号中的字符'U',应对二进制可重定位目标文件phase3.o的自什么偏移量开始的4个字节进行相应修改?(注意:按实验要求,该修改不能针对.text节及其重定位节中的内容。偏移量应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x000012ab)
参考答案:
0x00000300
程序模块phase3.o的do_phase过程中使用的COOKIE字符串的内容是什么?(提示:COOKIE字符串由互不相同的大写英文字符组成,与慕课号字符串等长)
参考答案:
TPDFOCYAZS
程序模块phase2.o中,假设在.text节中do_phase过程的“mov%esp,%ebp”指令(机器码为“89e5”)后,紧接着加入调用目标输出函数的机器码形如“e8????????”的call指令(注意每对“??”代表一个字节的十六进制表示——实际上在call指令之前还应加入参数压栈等多条指令,此处仅为假设以方便确定偏移量),则此处表示为“??”的4个字节的值依次是什么?(每个字节的值应表示为前缀0x后跟2个十六进制数字,注意其中的数字a-f应采取小写形式,相邻字节之间以单个空格分隔,例如0x1a0x2b0x3c0x4d)
参考答案:
0xc80xff0xff0xff
实验Phase2中,do_phase过程中第一条nop指令(机器码0x90)存储于二进制可重定位目标文件phase2.o的什么偏移量位置?(偏移量应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x0000001a)
参考答案:
0x00000107
程序模块phase2.o的.text节中,对字符串输出函数puts的引用位于自什么偏移量开始的4个字节?(偏移量应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x0000001a)
参考答案:
0x000000c4
程序模块phase1.o中包含的原始未经修改的输出字符串的前8个字符的ASCII编码依次是什么?(每个字符的ASCII编码应表示为前缀0x后跟2个十六进制数字,注意编码中的数字a-f应采取小写形式,相邻编码之间以单个空格分隔,例如0x1a0x2b0x3c0x4d0x5e0x6f0x200x20)
参考答案:
0x750x680x090x580x6c0x730x6c0x79
实验Phase1中,输出字符串的内容自二进制可重定位目标文件phase1.o的什么偏移量开始存放?(偏移量应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x000012ab)
参考答案:
0x000000d9
在程序模块phase1.o的.data节中,输出字符串的内容自什么偏移量开始存放?(偏移量应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x000000a9)
参考答案:
0x00000079
程序模块phase1.o的.text节中,对输出字符串的引用位于自什么偏移量开始的4个字节?(偏移量应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x0000000e)
参考答案:
0x00000007
实验Level0中,getbuf过程中的字符缓冲区数组buf在栈帧中的存放首地址相对于栈帧基址(即寄存器EBP的值)的偏移量是多少?(请使用32位补码表示偏移量,具体形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0xffffffab)
参考答案:
0xffffff99
实验Level0中,为完成缓冲区溢出攻击的目标,至少应对攻击字符串中相对于起始字符(对应0偏移)多少偏移量开始的4个字节进行合理设置?(偏移量具体形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x0000001a)
参考答案:
0x0000006b
(接上题)实验Level0中,为完成缓冲区溢出攻击的目标,应将攻击字符串中自上题偏移量开始的4个字节依次设为什么值?(每个字节的值须表示为前缀0x后跟2个十六进制数字,注意其中的数字a-f应采取小写形式,相邻字节之间以单个空格分隔,例如0x1a0x2b0x3c0x4d)
参考答案:
0xd50x930x040x08
实验Level1中,假设getbuf过程刚执行完call指令前一条的push指令时,ESP寄存器的值是0x55683a38,则刚执行完getbuf过程最后一条ret指令时,ESP寄存器的值是什么?(寄存器值须表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x1234abcd)
参考答案:
0x55683ab8
实验Level1中,如果将攻击字符串中偏移量0x6b开始的4个字节依次设置为0x02、0x94、0x04、0x08,并假设getbuf过程在调用Gets过程前EBP寄存器的值是0x55683ab0,则执行fizz过程中第一条“mov0x8(%ebp),%edx”指令时,0x8(%ebp)对应的地址值是什么?(地址应表示为前缀0x后跟8个十六进制数字——共10个字符,注意其中的数字a-f应采取小写形式,例如0x1234abcd)
参考答案:
0x55683abc
实验Level1中,如果将攻击字符串中偏移量0x6b开始的4个字节依次设置为0x08、0x94、0x04、0x08,则攻击字符串中偏移量0x67开始的4个字节应依次设置为什么值,即可完成本级别缓冲区溢出攻击的目标?(每个字节的值须表示为前缀0x后跟2个十六进制数字,注意其中的数字a-f应采取小写形式,相邻字节之间以单个空格分隔,例如0x1a0x2b0x3c0x4d)
参考答案:
0x980xd10x040x08
实验Level2中,假设实施攻击的机器指令代码自攻击字符串的起始开始存放,则攻击字符串中偏移量0x6b开始的4个字节应依次设置为什么值?(每个字节的值须表示为前缀0x后跟2个十六进制数字,注意其中的数字a-f应采取小写形式,相邻字节之间以单个空格分隔,例如0x1a0x2b0x3c0x4d)
参考答案:
0x190x320x680x55
实验Level2中,假设使用一条mov指令将32位整数形式的cookie值传送至32位整型全局变量global_value,则该mov指令的机器码字节序列是什么?(每个字节的值须表示为前缀0x后跟2个十六进制数字,注意其中的数字a-f应采取小写形式,相邻字节之间以单个空格分隔,例如0x1a0x2b0x3c0x4d0x5e0x6f...)
参考答案:
0xc70x050xa80xd10x040x080x1b0x0c0x0e0x42
实验Level3中,rumble过程的输入参数是某一字符串的存储地址,该字符串的各字节内容(ASCII编码)依次应是什么?(注意:最后字节应是标识C语言字符串结束的特殊字符;每个字节应表示为前缀0x后跟2个十六进制数字,注意其中的数字a-f应采取小写形式,相邻字节之间以单个空格分隔,例如0x1a0x2b0x3c0x4d0x5e0x6f...)
参考答案:
0x340x320x300x450x300x430x310x420x00
实验Level3中,假设攻击代码在栈中自地址0x55683270开始存储了上述用于rumble过程调用的字符串的内容,进而(在若干必要指令之后)使用push指令自栈地址0x55683224开始存储了4个字节的rumble过程的首条指令地址,紧接着使用ret指令跳至rumble过程执行,则自栈地址0x5568322c开始的4个字节的内容依次应是什么?(每个字节的值须表示为前缀0x后跟2个十六进制数字,注意其中的数字a-f应采取小写形式,相邻字节之间以单个空格分隔,例如0x1a0x2b0x3c0x4d)
参考答案:
0x700x320x680x55
实验阶段0中,用于与输入拆解字符串进行比较的程序内置字符串的起始内存地址是什么?(地址形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的英文字符全部采取小写形式,例如0x080489ab)
参考答案:
0x0804a198
对于一个n(n≥8)位的变量x,请根据C语言中按位运算的定义,给出C语言表达式使得x的最高有效字节不变,其余各位全变为0——()
参考答案:
(x>>(n-8))<<(n-8)
实验阶段0中,根据字符串比较函数返回值及其测试结果进行条件跳转的指令所在的起始内存地址是什么?(地址形式是前缀0x后跟8个十六进制数字——共10个字符,注意其中的英文字符全部采取小写形式,例如0x080489ab)
参考答案:
0x0804948a
实验阶段0的拆解字符串是什么?(注意必须准确输入拆解字符串,不能多输、少输、错输且大小写必须一致——详见实验说明文档)
参考答案:
Disksareconstructedfromplatters.
假定IA-32中全局数组a的声明为char*a[8],a的首地址为0x80498c0,i在ECX中,现要将a[i]取到EAX相应宽度的寄存器中,则所用的汇编指令是()
参考答案:
mov
0x80498c0(,%ecx,4),%eax
设R[eax]=FF000008H,R[ecx]=00001000H,执行“testl%eax,%ecx”后寄存器和标志变化为()
参考答案:
寄存器内容不变,OF=CF=SF=0,ZF=1
已知某C语言程序中数组R定义如下:structrecord{charid;intnum;};structrecordR[4]={{1,0x11},{2,0x22},{3,0x33},{4,0x44}};执行该程序时,给数组R分配的存储空间为()
参考答案:
32个字节
在采用IA-32和Linux的机器中执行如下程序段:floata=0.125;floatb=(1<<25);floatc=a+b;则c的结果值为()
参考答案:
33554432.0
已知地址0x80484d0处的指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026长春农行面试题目及答案
- 人工智能在证券市场中的应用模型-第4篇
- 2026年原料仓库化肥化工原料堆垛受潮自燃喷淋降温隔离火情防止连环燃烧应急预案
- 2026年税务师《涉税服务实务》真题及答案解析
- 2026年罗定职业技术学院单招职业适应性考试题库及参考答案详解一
- 2026年江西信息应用职业技术学院单招职业适应性考试题库及答案详解
- 〇巴西鞋业制造数字化转型进程中消费行为分析及投资前景展望
- 男士内裤项目融资商业计划书
- 幼儿园教学反思案例3篇
- 2026年幼儿园大班祖国边疆风光好
- 2026年安宁市教育体育系统急需紧缺人才引进(68人)考试备考试题及答案详解
- 机电一体化系统-001-国开机考复习资料
- DB51∕T 2431-2017 汽车客运站建设规程
- 模型34 旋转-费马点模型-原卷版
- JGJ6-2011 高层建筑筏形与箱形基础技术规范
- 2023年中国中医科学院广安门医院专项招聘医学类人员及高层次卫技人才考试历年高频考点试题含答案解析
- 工作场所安全使用化学品规定
- 《大道之行也》比较阅读12篇(历年中考语文文言文阅读试题汇编)(含答案与翻译)(截至2020年)
- GA 1815.8-2023交通运输系统反恐怖防范要求第8部分:公路隧道
- 化工设计概论第八章向非工艺专业提供设计条件
- 心理咨询与心理治疗:第5章 认知疗法的理论与技术
评论
0/150
提交评论