# 第五周课下测试(ch03)补交
第五周课下测试(ch03)补交
1、( 多选题 | 1 分)
有关gdb调试汇编,下面说法正确的是()
- A .
可以用disas反汇编当前函数 - B .
以16进制形式打印%rax中内容的命令是 print /x $rax - C .
可以用info registers查看所有寄存器的值 - D .
可以用info frame 查看所有栈帧的信息 - E .
可以使用up,down切换栈帧
ABCE
书P194
A:disas 反汇编当前函数
B:print /x $rax 以十六进制输出%rax的内容
C:info registers查看所有寄存器的值
D:info frame查看有关当前栈帧的信息,并非所有栈帧的信息,故不对
E:使用 up down ,跳转不同堆栈,查询其中的堆栈简要信息
2、( 多选题 | 1 分)
x86-64 Linux汇编中,构建栈帧的语句是( )
A .
movq %rbp, %rsp
popq %rbpB .
enterC .
leaveD .
pushq %rbp
movq %rsp, %rbp
BD
enter等价于
pushq %rbp
movq %rsp, %rbp
3、( 多选题 | 1 分)
Linux汇编中,销毁栈帧的语句是( )
- A .
movq %rbp, %rsp
popq %rbp - B .
leave - C .
enter - D .
pushq %rbp
movq %rsp, %rbp
AB
leave等价于:
movq %rbp, %rsp
popq %rbp
4、函数调用过程中,栈用来( )
- A .
传递参数 - B .
存储返回信息 - C .
保存寄存器 - D .
局部存储
ABCD
书P164
A:“用栈来管理他的过程所需要的存储空间,栈和程序寄存器存放着传递控制和数据、分配内存所需要的信息”即传递参数
B:“当前正在执行的过程的帧总是在栈顶。当过程P调用过程Q时,会把返回地址压入栈中”即存储返回信息
C:“Q的代码会扩展当前栈的边界,分配她的栈帧所需的空间。在这个空间中,他可以保存寄存器的值,分配局部变量空间”即保存寄存器
D:“为了提高空间和时间效率,x86-64过程只分配自己所需要的栈帧部分”即局部存储
5、( 多选题 | 1 分)
有关C语言的控制语句和汇编指令的关系说法正确的是()
- A .
可以使用汇编的有条件和无条件跳转来实现C语言的条件分支 - B .
可以使用数据的条件转移来实现C语言的条件分支 - C .
可以使用数据的条件转移来实现C语言的循环 - D .
可以使用条件测试和跳转组合起来实现循环
正确答案: A B D 你的答案: 未作答
ABD
A:举例gotodiff_se函数
B:P145 3·6·6一种代替的策略就是使用数据的条件转移,来实现条件分支
C、D:汇编中没有循环结构的指令可以用条件测试和跳转组合来实现循环的效果,故选D
6、( 多选题 | 1 分)
下面的跳转指令与ZF有关的是()
- A .
jmp - B .
je - C .
js - D .
ja - E .
jb - F .
jbe
BDF
见P1391图3-15
7、( 多选题 | 1 分)
假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是()
- A .
若t==0 ,则ZF=1 - B .
若t<0, 则CF=1 - C .
若t<0, 则SF=1 - D .
若(a<0==b<0)&&(t<0 != a<0), 则OF=1 - E .
若(a<0==b<0)&&(t<0 != a<0), 则CF=1 - F .
leaq指令不影响条件码寄存器 - G .
cmp指令不影响条件码寄存器
ADF
ZF:零标志。最近的操作得出的结果为0,故当t==0,ZF=1,A对
CF:进位标志。最近的操作使最高位产生了进位。B E不对
SF:符号标志。最近的操作得到的结果为负数。
[所以为啥不选C啊?????]
OF:溢出标志。最近的操作导致一个补码溢出——正溢出或负溢出。(a<0==b<0)&&(t<0!=a<0) 有符号溢出,故选D
leaq指令不改变任何条件码,选F
CMP指令根据两个操作数之差来设置条件码。除了只设置条件码而不更新目的寄存器之外,与SUB指令的行为是一样的。
8、有关移位指令,下面说法正确的是()
- A .
SAL和SHL效果一样 - B .
移位量只能是一个立即数 - C .
移位量可以放在%cl中 - D .
移位量可以放在%cx中 - E .
SAR和SHR效果一样
AC
A:左移指令有俩个名字:SAL和SHL效果一样。
B、C、D:移位量可以是一个立即数,或者放在单字节寄存器%cl中。
E:右移指令不同,SAR执行算术移位,SHR执行逻辑移位
9、( 多选题 | 1 分)
对于下面的值,有关算术运算的指令正确的是()

Image 1.png
- A .
addq %rcx,(%rax), 目的地址是0x100 - B .
addq %rcx,(%rax), 目的地址的内容是0x100 - C .
subq %rdx, 8(%rax) 的值是0xA8 - D .
incq 16(%rax)值是12
ABC
我参考了这篇[部落格](http://blog.csdn.net/qq_35524916/article/details/61421411)
10、( 多选题 | 1 分)
假设%rax中的值为x, %rcx中的值为y,关于leaq指令,下面正确的()
- A .
leaq 6(%rax), %rdx; %rdx中值为6+x - B .
leaq 6(%rax), %rdx; %rdx中值为6x - C .
leaq 7(%rax, %rax,8), %rdx; %rdx中值为9x - D .
leaq 7(%rax, %rax,8), %rdx; %rdx中值为63x - E .
leaq 7(%rax, %rax,8), %rdx; %rdx中值为15x
我参考了这篇[部落格](http://blog.csdn.net/swordmanwk/article/details/41169953)
11、以下代码是将void decode1(long *xp, long *yp, long *zp)反汇编的结果,下面说法正确的是()
Image 6.png
A .
从汇编代码看出,decode1的参数先入栈的是zpB .
从汇编代码看出,decode1的参数先入栈的是xpC .
函数功能等价于 t=x; x=y; y=z; z=t;D .
函数功能等价于 x=y; y=z; z=x;
C
xp、yp和zp分别存储在对应的寄存器%rdi、%rsi和%rdx中。
12、( 单选题 | 1 分)
x86-64 Linux中,函数调用的返回值存在()寄存器中。
- A .
%rax - B .
%rbx - C .
%rcx - D .
%rsp - E .
%rbp
书P120第一行
13、( 单选题 | 1 分)
x86-64 Linux中,%rsp的值为0x108, pushq %eax后,%rsp的值为()
- A .
0x100 - B .
0x108 - C .
0x110 - D .
0x118
p128: pushq %rsp-8
14、( 单选题 | 1 分)
x86-64 Linux中,%rbp的值为0x108, pushq %eax后,%rbp的值为()
- A .
0x100 - B .
0x108 - C .
0x110 - D .
0x118
p128,push不影响%rbp的值。
15、x86-64 Linux中,有关MOV,下面正确的是()
- A .
movw $0x50, %eax - B .
movw %bp, %sp - C .
movl ($1234), ($2345) - D .
movb $10, (%rsp) - E .
movq %rax, 4(%rbp) - F .
movb (%rdi, %rcx), %ah
p122 ,p123, 注意内存之间不能直接mov,要用寄存器中转。b,w,l,q表示的长度要和寄存器匹配。
16、对于图中内存地址和寄存器的值,下面说法正确的是()
Image 5.png
- A .
%rax的值是0x100 - B .
(%rax)的值是0x100 - C .
(%rax)的值是0x104 - D .
(%rax)的值是0xFF - E .
4(%rax)的值是0xAB - F .
(%rax,%rcx,4)的值是0xAB - G .
(%rax,%rcx,4)的值是0x104
ADEF
%rax :返回值
%rcx:第四个参数
%rdx:第三个参数
17、x86-64 Linux中,操作数的类型有()
- A .
立即数 - B .
寄存器 - C .
内存引用 - D .
IO引用
ABC
书P121
“各种不同的操作数被分为三种类型:立即数,寄存器,内存引用”
18、( 单选题 | 1 分)
x86-64中,()寄存器用来保存运行时栈的结束位置(栈顶)
- A .
%rax - B .
%rbx - C .
%rbp - D .
%rsp
D
书P120
"其中最特别的是栈指针%rsp,用来指明运行时栈的结束位置"
19、( 单选题 | 1 分)
movl一次传送()字节的数据
- A .
1 - B .
2 - C .
4 - D .
8
C
书P119
“movl(传送双字)”即传送4字节
20、( 单选题 | 1 分)
x86-64 Linux中,push %rbx对应的机器码是()
- A .
0x53 - B .
0xd38948 - C .
0x4889d3 - D .
0x5b
A
书P115
下方代码
21、( 单选题 | 1 分)
x86-64中指令长度是()字节
- A .
1 - B .
2 - C .
4 - D .
1-4 - E .
1-8 - F .
1-15 - G .
1-16 - H .
以上都不对
F
书P116
“x86-64的指令长度从1到15个字节不等”
22、( 单选题 | 1 分)
X86-64中虚拟地址的数量目前是()个
- A .
2^16 - B .
2^32 - C .
2^48 - D .
2^64
C
书P114
“在目前的实现中,这些地址的高16位必须设置为0,所以一个地址实际上能够指定的是2^48或64TB范围内的一个字节”
23、( 单选题 | 1 分)
要实现c中的if,while所需的条件变化,需要()寄存器中的信息。
- A .
通用 - B .
向量 - C .
条件码 - D .
整数
C
书p114
“条件码寄存器保存着最近执行的算数或逻辑指令的状态信息。他们用来实现控制或数据流中的条件变化,比如说用来实现if和while语句”
24、( 单选题 | 1 分)
程序计数器(PC) 指示将要执行的下一条指令在内存中的地址,X86-64中,PC指()
- A .
%rsp - B .
%rip - C .
%rbp - D .
%rax
B
书P113
“程序计数器(通常成为“PC”,在x86-64中用%rip表示)给出将要执行的下一条指令在内存中的地址”
25、( 单选题 | 1 分)
Linux中,对目标代码code.o进行反汇编的命令是()
- A .
gcc -c code.o - B .
asm code.o - C .
od code.o - D .
objdump -d code.o
D
书P115
“在Linux系统中,带‘-d’命令行标志的程序OBJDUMP(表示“object dump”)可以充当这个角色:linux> objdump -d mstore.o”
26、( 多选题 | 1 分)
对于机器级编程,要深入理解两种抽象()
- A .
ISA - B .
进程 - C .
文件 - D .
虚拟地址
AD
书P113
“对于机器级编程来说,其中两种抽象尤为重要。第一种是有指令集体系结构或指令集结构(ISA)来定义的机器级程序的格式和行为第二种抽象是机器级程序使用的内存地址是虚拟地址”
27、( 单选题 | 1 分)
Intel的处理模型中()首次引入超线程技术。
- A .
Pentium III - B .
Pentium 4 - C .
Pentium 4E - D .
Core 2
C
书P111
“Pentium 4E,增加了超线程技术”
28、( 单选题 | 1 分)
Intel的处理模型中()首次将体系结构扩展到32位,增加了平坦寻址模式。
- A .
8087 - B .
80286 - C .
i386 - D .
i486
C
书P111
“i386.将体系结构扩展到32位”
# 第五周课下测试(ch03)补交的更多相关文章
- 20155211课下测试ch10补交
20155211课下测试ch10补交 1.假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是() A.c = f B.c = o C.c = b D.c = 随机数 答案:A 解 ...
- 2017-2018-1 20155214 《信息安全系统设计基础》 第9周课下测试-mypwd
2017-2018-1 20155214 <信息安全系统设计基础> 第9周课下测试-mypwd(深入版) 题目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; ...
- 课下测试CH01补交
课下测试CH01补交 ( 单选题 | 1 分) Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比. A . 正确 B . 错误 正确答案: B 你的答案: 未作答 ...
- 第八周课上测试ch03
测试-1-ch03 任务详情 通过输入gcc -S -o main.s main.c,将下面c程序"week04学号.c"编译成汇编代码 int g(int x){ return ...
- 课下测试补交(ch03 ch08)
课下测试补交(ch03 ch08) 课下测试 ch03 1.有关gdb调试汇编,下面说法正确的是(ABCE) A . 可以用disas反汇编当前函数 B . 以16进制形式打印%rax中内容的命令是 ...
- 第七周 ch04 课下测试补交
2017-2018-1 20155335 <信息安全系统设计基础>第7周 课下测试博客 本人不慎忘记去交dao'zhi 测试题目: SEQ+对SEQ的改变有() A . PC的计算挪到取指 ...
- # 课下测试补交(ch01)20155337
课下测试补交(ch01) 1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A .正确 B .错误 解析:Amdahl定律,该定律的主要思想是,当我们对 ...
- 课下测试补交(ch01、ch02、ch07)
课下测试补交(ch01.ch02.ch07) 课下测试ch01 1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A . 正确 B . 错误 解析:课本 ...
- 课下测试ch01修改补交
由于当时学习态度有问题,没有注意到第一次的课下测试,虽然在当周的总结中就进行补交,但是当时态度并没有很认真,可能没有引起老师的注意,现在重新修改,望老师谅解. (单选题 | 1 分) Amdahl定律 ...
随机推荐
- FTP(文件传输协议)工作原理
目前在网络上,如果你想把文件和其他人共享.最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件. 1.FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户 ...
- MVC过滤器的使用总结
一.过滤器的作用 在MVC项目当中,当我们要实现这些功能时:身份验证,异常处理.日志记录,性能统计,如果按照一般的做法那就需要在每个页面重复做这些工作,这样做起来不仅费时费力,代码也会变得冗余难懂,如 ...
- redis下的持久化保存
rdb.h rdb.c ---> 完成数据保存到临时文件,再利用rename保存到指定文件的过程: 如果需要写一个数据持久化保存的功能时,可以参考这部分代码: //rdb API int ...
- Permission Denial: opening provider 隐藏的android:exported属性的含义
Permission Denial: opening provider 隐藏的android:exported属性的含义 2013-03-07 13:17 227人阅读 评论(0) 收藏 举报 场景: ...
- 虚拟机下的CentOS无法上网的解决办法
1.首先保证虚拟机的网络适配器为NAT模式 2.设置虚拟机的“编辑”-->“虚拟网络编辑器”中的VMnet8的DHCP的设置两个选项都勾选上. 3.设置物理主机,保证虚拟网关的IP地址为自动获取 ...
- python 中logging的日志封装
因为最近在做平台,发现有同事,使用django封装了日志模块,看样子很简单,准备自己单独做了一个日志封装模板,对于python不熟练的我,封装部分参考了多个博主的内容,形成自己的日志模块,内容如下: ...
- unbuntu 14安装 golang
golang目前有两种编译,一种是golang官方提供的,另外一个是gnu提供的gccgo.这里安装的是Golang,从仓库安装(apt-get) sudo apt-get instal ...
- 6、Dubbo-配置(1)
覆盖关系 下图展示了配置覆盖关系的优先级,从上到下优先级依次降低: 参考官网:http://dubbo.apache.org/zh-cn/docs/user/configuration/configu ...
- 优化Eclipse基本配置
eclipse有很多默认配置会造成其本身运行缓慢,特别是加载大型工程的时候,以下列举的几种方法可以优化eclipse的运行速度,加快工程的加载和构建. 关闭XML Validation 1. 关闭当前 ...
- jFinal 2.2入门学习之一:搭建框架输出helloword
官方推荐用Eclipse IDE for Java EE Developers 做为开发环境 1.创建 Dynamic Web Project 2.修改 Default Output Folder,推 ...