# 第五周课下测试(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定律 ...
随机推荐
- Monster: half man, half beast and very scary.
Monster: half man, half beast and very scary. 怪物,半人半兽很吓人.
- 为什么JS中0.1+0.2 != 0.3
为什么JS中0.1+0.2 != 0.3 在我曾经的一篇< javascript入门教程 (2) >中,讲到JS中数字运算时,我们提到过一个叫做 数字运算中的精度缺失的问题,当时我们只是简 ...
- luogu P1262 间谍网络
嘟嘟嘟 建图还是很明显的. 接着分两种情况: 1.图中不存在环:那么只要收买那些入度为0的点.如果这些点有的不能收买.就不能控制所有间谍. 2.图中存在环,那么对于这些在环中的点,我们只要收买数额最少 ...
- [Python 网络编程] TCP Client (四)
TCP Client 客户端编程步骤: 创建socket对象 连接到服务端的ip和port,connect()方法 传输数据 使用send.recv方法发送.接收数据 关闭连接,释放资源 最简单的客户 ...
- 20145324 Java实验三
一.git 上传代码步骤 上传结果 原代码 下载同学代码 更改 二.重构 原代码 rename 原代码 实验总结 这次实验比较简单,而且终于解决了git的问题,很开心 步骤 耗时 百分比 需求分析 1 ...
- 页面QQ在线咨询、在线交谈代码
页面QQ在线咨询.在线交谈代码 样式一: <a target="blank" rel="nofollow" href="tencent://me ...
- JUnit提供测试框架的优势(JUnit Provides Advantages as a Test Framework)
测试Java类的内部功能就是刚才你做的那些工作了.真正的测试和刚才的简单例子的主要区别是代码库的大小和复杂度.在处理一大堆代码时,你会需要收集情况报告.但上面的例子遇到第一个错误就停止了,它没有收集尽 ...
- Linux环境下部署SpringBoot项目
1.在pom文件中添加maven插件 <build> <plugins> <plugin> <groupid>org.springframework.b ...
- web性能优化之GZIP压缩
从服务端优化来说,通过对服务端做压缩配置可以大大减小文本文件的体积,从而使加载文本的速度成倍的加快.目前比较通用的压缩方法是启用gzip压缩.它会把浏览器请求的页面,以及页面中引用的静态资源以压缩包的 ...
- iOS项目启动及启动时间优化
app的启动入口Main函数: int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc ...