第五周课下测试(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 %rbp

  • B .

    enter

  • C .

    leave

  • D .

    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的参数先入栈的是zp

  • B .

    从汇编代码看出,decode1的参数先入栈的是xp

  • C .

    函数功能等价于 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)补交的更多相关文章

  1. 20155211课下测试ch10补交

    20155211课下测试ch10补交 1.假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是() A.c = f B.c = o C.c = b D.c = 随机数 答案:A 解 ...

  2. 2017-2018-1 20155214 《信息安全系统设计基础》 第9周课下测试-mypwd

    2017-2018-1 20155214 <信息安全系统设计基础> 第9周课下测试-mypwd(深入版) 题目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; ...

  3. 课下测试CH01补交

    课下测试CH01补交 ( 单选题 | 1 分) Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比. A . 正确 B . 错误 正确答案: B 你的答案: 未作答 ...

  4. 第八周课上测试ch03

    测试-1-ch03 任务详情 通过输入gcc -S -o main.s main.c,将下面c程序"week04学号.c"编译成汇编代码 int g(int x){ return ...

  5. 课下测试补交(ch03 ch08)

    课下测试补交(ch03 ch08) 课下测试 ch03 1.有关gdb调试汇编,下面说法正确的是(ABCE) A . 可以用disas反汇编当前函数 B . 以16进制形式打印%rax中内容的命令是 ...

  6. 第七周 ch04 课下测试补交

    2017-2018-1 20155335 <信息安全系统设计基础>第7周 课下测试博客 本人不慎忘记去交dao'zhi 测试题目: SEQ+对SEQ的改变有() A . PC的计算挪到取指 ...

  7. # 课下测试补交(ch01)20155337

    课下测试补交(ch01) 1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A .正确 B .错误 解析:Amdahl定律,该定律的主要思想是,当我们对 ...

  8. 课下测试补交(ch01、ch02、ch07)

    课下测试补交(ch01.ch02.ch07) 课下测试ch01 1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A . 正确 B . 错误 解析:课本 ...

  9. 课下测试ch01修改补交

    由于当时学习态度有问题,没有注意到第一次的课下测试,虽然在当周的总结中就进行补交,但是当时态度并没有很认真,可能没有引起老师的注意,现在重新修改,望老师谅解. (单选题 | 1 分) Amdahl定律 ...

随机推荐

  1. ZT 线程的分离状态 2012-08-16 17:00:59

    线程的分离状态 2012-08-16 17:00:59 分类: LINUX 其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的时候都是显示创建线程失败,我就百度了一下, ...

  2. JVM线程状态,park, wait, sleep, interrupt, yeild 对比

    ---恢复内容开始--- JVM线程状态 NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED BLOCKED是等待获得对象锁 WAIT ...

  3. hctf2018wp复现

    1.bottle 登陆网站后存在提交url的地方 测试发生存在如下paload,知识点:1.crlf 2.写一个网站开发的端口小于80,浏览器就不会跳转能执行js(payload只能在火狐浏览器执行) ...

  4. JavaScript脚本的执行原理?

    JavaScript是一种动态.弱类型.基于原型的语言,通过浏览器可以直接执行. 当浏览器遇到\<script>标记的时候,浏览器会执行之间的JavaScript代码.嵌入的js代码是顺序 ...

  5. PHP扩展功能----cURL

    一.入门三部曲 1.cURL是什么? wikipedia介绍: * cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工具,但按传统,习 ...

  6. spring框架中beans.xml文件报错XmlBeanDefinitionStoreException

    第一次构建spring,实现简单的注入方式,就发生了beans.xml文件报错,报错信息如下图 org.springframework.beans.factory.xml.XmlBeanDefinit ...

  7. PAT——1074. 宇宙无敌加法器(20)

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个PAT星人都必须熟记各位数字的进制表,例如 ...

  8. iOS的AssetsLibrary框架访问所有相片

    该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation. ALAssetsLibrary ...

  9. "strace -p"非常有用,它减少了很多猜测工作,也不需要重新启动应用。lsof -p process_id +iostat + sar -n DEV 1

    linux神器strace - youxin - 博客园https://www.cnblogs.com/youxin/p/8837771.html 某个进程突然占用了很多CPU? 或者某个进程看起来像 ...

  10. SimpleDateFormat 的 format 方法使用具体解释

    Java中怎么才干把日期转换成想要的格式呢.或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类能够实现,下面是Simple ...